質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1283閲覧

enum型の条件分岐【Python】

kawaramuu

総合スコア21

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/11/29 14:48

現在、pynputを使用して自分の各キーの入力頻度を調べています。
そして、各キーの入力に応じて処理を行いたいと考えています。
現在、入力のキーがアルファベットの時は、その時に応じた処理を行うことができています。
しかし、アルファベット以外の特別なキー(enter、backspace、commandなど)を入力すると、キー入力に応じた処理を行うことができません。
現在作成しているプログラムは以下の通りです。(今回は例として、キーボードでaが入力された時に、aが入力されましたを表示する処理としています。)

Python

1from pynput import keyboard 2 3def on_press(key): 4 try: 5 print("alphanumeric key {0} pressed".format(key.char)) 6 if key.char == "a": 7 print("aが入力されました") 8 9 except AttributeError: 10 print("special key {0} pressed".format(key)) 11 12 ############################# 13 # enterを入力すると 14 # print("enterが入力されました") 15 ############################# 16 17with keyboard.Listener(on_press=on_press) as listener: 18 listener.join()

特別なキーを入力すると、on_pressの引数keyの型がenum型でした。
このような特別なキーを入力した時に、入力に応じた処理を書くためにはどうすればいいでしょうか。
この解決方法をご存知の方はご教授いただけると嬉しいです。よろしくお願い致します。
(知識不足のため、正しい用語がわからず、文章がわかりにくくなっていると思います。申し訳ありません。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ドキュメントをざっと見る限り、こんなふうに比較してあげれば良さそうです。

Python

1def on_press(key): 2 try: 3 .... 4 except AttributeError: 5 print("special key {0} pressed".format(key)) 6 7 if key == keyboard.Key.enter: 8 print("enterが入力されました")

属性の一覧は次のようにすれば見れます。

Python

1>>> dir(keyboard.Key) 2['__class__', '__doc__', '__members__', '__module__', 'alt', 'alt_l', 'alt_r', 'backspace', 'caps_lock', 'cmd', 'cmd_r', 'ctrl', 'ctrl_l', 'ctrl_r', 'delete', 'down', 'end', 'enter', 'esc', 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'home', 'insert', 'left', 'menu', 'num_lock', 'page_down', 'page_up', 'pause', 'print_screen', 'right', 'scroll_lock', 'shift', 'shift_r', 'space', 'tab', 'up']

投稿2018/11/29 16:02

LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kawaramuu

2018/11/29 16:30

ご回答いただきありがとうございます。教えていただいた方法で実現したいことができました! わかりにくい質問の文面だったと思いますが、すぐに回答いただきありがとうございます。 属性の一覧についても教えていただき、ありがとうございます。今後の参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問