¿Cómo simular una entrada de teclado de cadena usando Python?

Estoy usando windows 8 y tengo el modulo de api de windows

Estoy tratando de crear un método:

TypeInput(argument) #argument is a string

con el objective de que mi método simule la escritura del argumento si el argumento es una cadena.

Desafortunadamente,

Actualmente simulo escribir usando:

win32api.keybd_event(win32con.KEYCODE, MS KEYCODE, 0, 0)

Y no sé cómo abstraer esto para poder insertar caracteres arbitrarios.

Mi conjetura inicial era hacer conversiones de unicode

Pero parece que el problema es peor por ejemplo.

ord('f') = 102 = 66 in hex

pero el código de Windows para ‘f’ es

0x046

y 46 no es 66 …

así que no estoy muy seguro de cómo se están convirtiendo, no parece estar igualmente espaciado.

Llegados a este punto, he llegado a la conclusión de que hay una manera más elegante de hacerlo.

¿Alguien sería tan genial como para mostrarme y explicar?

Desea utilizar SendInput , en lugar de keybd_event, y asegúrese de que el campo KEYBDINPUT.dwFlags tenga establecido el indicador KEYEVENTF_UNICODE . Si no está utilizando KEYEVENTF_UNICODE , debe asegurarse de configurar tanto el código de escaneo como el código de clave; De lo contrario obtendrá errores específicos de la aplicación.

Hay un envoltorio de Python para SendInput, por lo que también ayudará.