2013-07-10 31 views
0

我有一個問題,在python win32api.keybd_event(見下面的腳本):Python的鍵盤事件不尊重佈局

根據EN佈局腳本,請按「Q」鍵再按「1」鍵(似乎確定)。

在FR佈局下,腳本按「q」鍵,然後按「&」鍵(而不是「a」和「&」)。

這看起來很奇怪,佈局翻譯是部分完成的。

下面是測試樣品:

import win32api 
import ctypes 
import win32con 
import time 

def play(vk): 
    s = ctypes.windll.user32.MapVirtualKeyA(vk, 0) 
    win32api.keybd_event(vk, s, 0, 0) 
    time.sleep(0.1) 
    win32api.keybd_event(vk, s, win32con.KEYEVENTF_KEYUP, 0) 
    time.sleep(0.7) 

vk_key_Q = int('0x51', 16) 
vk_key_1 = int('0x31', 16) 

while True: 
    play(vk_key_Q) 
    play(vk_key_1) 

感謝您的幫助!

回答

0

我打賭你需要在Win32 API中通過TranslateMessage。根據Windows文檔,只是觸發鍵盤事件不會通過鍵盤佈局映射事件;需要與TranslateMessage分開完成,如果應用程序選擇在較低的級別工作,那麼這些應用程序需要明確地執行。我不確定win32api是否有可用的方法,但閱讀時,它看起來像win32gui