2011-05-06 62 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獲得一個事件。