2016-09-30 6 views
0

私はその場にグーグルで行きました。キーがダウンしているかどうかを検出します。mac python

私はPythonアプリケーションを持っており、キーがダウンしているかどうかを検出したいと考えています(OSX上)。

私が見つけた唯一の答えは、Windows用のライブラリか、アプリケーションウィンドウをアクティブにする必要があるライブラリ(pygameなど)です。

pymouseにposition()メソッドがどのようにあるかと同様です。

私は次のように私のコードで何かを行うことができるようにしたい:

Macの
if keyboard.keydown(<key code>): 
    # do something 
elif keyboard.keycode(<some other keycode>): 
    # do something 

+1

2k以上のコードはありませんか?さらに、なぜインタラクティブな環境(別のライブラリが必要)にキーが押されたのかを検出したいのですか? – Jan

+0

私は、ユーザーの画面のスクリーンショットを取り、バックグラウンドでアクションを実行してから画面と再びやりとりするアプリケーションを構築しました。私は上下のキーを使用して、アプリケーションの特定の部分の速度を調整することをユーザーに許可できるようにしたいと思います。それはGUIを持つアプリケーションではありません – K2xL

+0

あなたは一般的に特定のキーまたはキーを意味しますか? – coder

答えて

1

考えられる唯一の方法は、ttyまたはtermiosです。ここで

は、ユーザーの入力を待ち、「」押された場合にキーコードを印刷し、最小限の例です...

#!/usr/bin/env python 

    import sys,tty 
    tty.setcbreak(sys.stdin) 
    key = ord(sys.stdin.read(1)) # key captures the key-code 
    # based on the input we do something - in this case print something 
    if key==97: 
     print "you pressed a" 
    else: 
     print "you pressed something else ..." 
    sys.exit(0) 

はそれが役に立てば幸い!

注:このソリューションは、特にLinuxの/ macオペレーティングシステムを指します。

-1

プラットフォーム間のキーの押下とリリースの処理を含むGUIフレームワークであるtkinterを持つPython comex。イベントハンドリングのみが必要な場合は、gui部分を抑制することができます。これは私のWindowsマシン上で期待どおりに動作します。それはあなたのMacで動作するはずです。バインド・ステートメントで

from time import sleep 
import tkinter as tk 
root = tk.Tk() 
root.withdraw() # Do not show root window. 
spacedown = False 
def press_s(dummy): 
    global spacedown 
    spacedown = True 
    print('down') 
def release_s(dummy): 
    global spacedown 
    spacedown = False 
    print('up') 
root.bind('<KeyPress- >', press_s) 
root.bind('<KeyRelease- >', release_s) 
while True: 
    sleep(1) 
    root.update() 
    print('tick', 'down' if spacedown else 'up') 

、(例えばaまたは*など)キーまたはkeyname-後にスペースを交換してください。キーの現在の状態を検出したい場合は、root.updateを呼び出して、キューに入れられたイベントを処理し、keydownを設定します。

あなたは、これが

を入力押すように、ユーザーが必要とするが、あなたはこの 印刷(素晴らしい)のような何かを行うことができ、入力されたコマンドに 素晴らしい=入力(「あなたはどのように素晴らしいです」)

を使用することができます

関連する問題