2017-07-29 22 views
1

私はpythonでグローバルなkeypressesを検出しようとしています。 (私はPythonの完全なnoobです)。私の問題はpyHookが私の主要な出来事を認識しているが、それはもう私に入力させないということです。開いたselenium webdriverに何かを入力しようとすると(コード参照)、keyidが出力されている以外は何も起こりません。ここでpyHookは入力できません

が私のコードです:

import pyHook, pythoncom, sys, win32api 
from colorama import Fore, init 
from selenium import webdriver 

add_key = 187 #keyID for "+" key 
commands = ["start", "quit", "save", "help"] 
urls = [] 
driver = webdriver.Chrome() 

def OnKeyboardEvent(event): 
    print(event.KeyID) 
    if event.KeyID == add_key: 
     print("add key pressed") 
     urls.append(driver.current_url) 
    return 0 

def PrintHelpMessage(): 
    # write help message 
    MainLoop() 

def MainLoop(): 
    print(Fore.GREEN + "type commands for more help.") 

    usr_input = input() 
    if usr_input == "commands": 
     print(Fore.GREEN + "available commands: start, quit, save, help") 
     command_input = input() 
     if command_input in commands: 
      if command_input == "start": 
       hook_manager = pyHook.HookManager() 
       hook_manager.KeyDown = OnKeyboardEvent 
       hook_manager.HookKeyboard() 
       pythoncom.PumpMessages() 
      elif command_input == "quit": 
       sys.exit(0) 
      elif command_input == "save": 
       # implement save function 
       print("Save function implemented soon") 
      elif command_input == "help": 
       PrintHelpMessage() 


init(autoreset = True) # init colorama -> makes it possible to use colored text in terminal 
print(Fore.RED + "---easy playlist manager---") 
driver.get("http://youtube.com") 
MainLoop() 

たぶん誰かがそれを修正する方法を教えてくださいできますか?

挨拶

答えて

0

あなたはOnKeyboardEvent0を戻ってきているしているので、キーボードイベントは、他のハンドラやウィンドウ自体に渡されていません。イベントをフィルタリングしない場合は、Trueを返す必要があります。

詳細については、ドキュメントのEvent Filteringを参照してください。

関連する問題