2017-08-30 6 views
0

keyboardモジュールをPythonで見つけました。キーボードのイベント(主に取得したもの)をログに記録するのに、keyboard.record()を使用しています。キーを押すと機能が停止するはずです。キーボードでキーボードの録音を停止する

だから私の質問です..任意のキーを押すと機能を停止する方法はありますか?私が知る限り、モジュールにはそのようなことを示す特別なキーワードはありません。

私はこの

keys_pressed = keyboard.record(until='any')

しかし、それはエラーを引き起こしているをやってみました同様。

+0

私がどのkeypressでもロガーを止めるには、なぜ1位にしたいのか分かりません。 Btwでは、モジュールによって生成されたイベントタイプは_key down_と_key up_です。また、質問にもエラーが含まれている必要があります。 – CristiFati

答えて

1

keyboard.record()を使うのは、最初のキー押しだけを止めて(録音する)必要がある場合は、表示されません。

代わりに、あなたはこのように()keyboard.read_key使用できます。これが不可能であるよう

​​
+0

提案をありがとう! 'read_key()'は完全にここで動作します。 –

0

ソースコードの中を掘った後、それが見えます。

def record(until='escape'): 
    """ 
    Records all keyboard events from all keyboards until the user presses the 
    given key combination. Then returns the list of events recorded, of type 
    `keyboard.KeyboardEvent`. Pairs well with 
    `play(events)`. 

    Note: this is a blocking function. 
    Note: for more details on the keyboard hook and events see `hook`. 
    """ 
    recorded = [] 
    hook(recorded.append) 
    wait(until) 
    unhook(recorded.append) 
    return recorded 

パラメータuntilwait()に渡されます。したがって、wait()には、任意のキープレスを処理するコードが必要です。

def wait(combination=None): 
    """ 
    Blocks the program execution until the given key combination is pressed or, 
    if given no parameters, blocks forever. 
    """ 
    wait, unlock = _make_wait_and_unlock() 
    if combination is not None: 
     hotkey_handler = add_hotkey(combination, unlock) 
    wait() 
    remove_hotkey(hotkey_handler) 

最終的には、そこにkeyboard.record(until='any')のようなものを処理するために構築された全くのソースコードはありませんので、あなたは、回避策を見つける必要があります。 How do I make python to wait for a pressed keyを確認してください。

​​
+0

ええ、尋ねる前に、自分でソースコードを覗いてみました。とにかく、 'read_key()'は私がやろうとしていることに対してうまく機能しているようですが、とにかく答えてくれてありがとう。 –

0

あなたはすべてのキーのためのフックを設定する関数を作ることができます:あなたが録音を停止するために使用されていた任意のキーを記録する必要がある場合は、その後、J-Lの回避策を使用します。

import keyboard 

def record_until(any_key=False): 
    recorded = [] 

    keyboard.hook(recorded.append) # need this to capture terminator 

    wait, unlock = keyboard._make_wait_and_unlock() 

    if any_key: 
     hook = keyboard.hook(unlock) 

    wait() 

    try: 
     keyboard.remove_hotkey(hook) 
    except ValueError: pass 

    return recorded 


record_until(any_key=True) 
関連する問題