Как заставить pyHook и SendKeys работать вместе - PullRequest
0 голосов
/ 02 мая 2011

Я пытаюсь написать механизм автокоррекции в Python. Я регистрирую нажатия клавиш пользователя, и когда они перестают печатать на секунду, я хочу стереть все и заново ввести исправленное предложение.

Приведенный ниже код работает нормально, за исключением того факта, что SendKeys работает очень медленно. Я думаю, что вызов PumpMessages как-то мешает этому. Кто-нибудь знает, как мне справиться с этой проблемой?

import threading

import pyHook
import pythoncom
from SendKeys import SendKeys

# Store typed keys.  Correct words when stop typing for a bit.
def info_handler():
  def event_info(e):
    if e.MessageName == 'key down':
      v.keys_pressed.append(e.Key)
      if v.t:  v.t.cancel()
      v.t = threading.Timer(1, correct_words)
      v.t.start()
    return True
  return event_info

def correct_words():
  SendKeys('{BS %i}' % len(v.keys_pressed))

# Listen to keys.
class v:
  keys_pressed = []
  t = None
hm = pyHook.HookManager()
hm.KeyDown = info_handler()
hm.HookKeyboard()
pythoncom.PumpMessages()

1 Ответ

0 голосов
/ 02 мая 2011

Nevermind. Мне просто нужно было вызвать hm.UnhookKeyboard () перед вызовом SendKeys.

Редактировать : Кто-то спросил меня о дополнительной информации. Я решил просто перенести свои ключевые эксперименты на GitHub: https://github.com/JesseAldridge/Keyboard-Tricks

...