Python键盘事件不考虑布局

Python键盘事件不考虑布局,python,windows,winapi,Python,Windows,Winapi,python中的win32api.keybd_事件有问题(请参见下面的脚本): 在EN布局下,脚本按“q”键,然后按“1”键(似乎正常) 在FR布局下,脚本按“q”键,然后按“&”键(而不是“a”和“&”) 布局翻译部分完成了,这看起来很奇怪 以下是测试样本: import win32api import ctypes import win32con import time def play(vk): s = ctypes.windll.user32.MapVirtualKeyA(vk

python中的win32api.keybd_事件有问题(请参见下面的脚本):

在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)

谢谢你的帮助

我打赌你需要通过Win32 API。根据Windows文档,仅仅触发键盘事件并不能通过键盘布局映射事件;这需要使用
TranslateMessage
单独完成,如果应用程序选择在如此低的级别上工作,则需要显式完成。我不确定
win32api
是否有可用的方法,但仔细阅读,看起来
win32gui
有可用的方法