2011-05-06 59 views
0

在下面的代码中,当我返回时,on_key_down被调用两次。它只会被其他键调用一次。任何想法这里发生了什么?PyHook:返回keydown两次触发

import pyHook, pythoncom, win32api 

def on_key_down(e): 
    if e.MessageName == 'key down': 
    print 'e.Key: ', e.Key 
    print 'e.Ascii: ', e.Ascii 
    return True 
hm = pyHook.HookManager() 
hm.KeyDown = on_key_down 
hm.HookKeyboard()  
pythoncom.PumpMessages() 

回答

0

因为Window的新行是一个'\ r \ n',所以当你打回车时你可能会同时得到这两个字符。

+0

不,我不这么认为。我编辑我的代码来打印ascii值,它是13次,这是\ r的代码。 – 2011-05-06 11:06:25

+0

有趣。你有没有考虑写C和直接与winapi接口,看看它的行为? – amccormack 2011-05-06 11:46:56

+0

呃......自从我写了C以来已经过去了几年了。我想我现在只是解决这个问题。 – 2011-05-06 12:35:24

0

如果可以,请尝试使用KeyUp而不是KeyDown。我只通过KeyUp获得一个事件。