Eche un vistazo a este https://github.com/SavinaRoja/PyUserInputits control multiplataforma para mouse y teclado en python
El control del teclado funciona en los sistemas X11 (linux) y Windows. Pero no hay soporte para Mac (cuando escribí esta respuesta).
from pykeyboard import PyKeyboard
k = PyKeyboard()
# To Create an Alt+Tab combo
k.press_key(k.alt_key)
k.tap_key(k.tab_key)
k.release_key(k.alt_key)
Un enfoque de más bajo nivel sería crear un uinput
dispositivo desde el cual inyectaría eventos de entrada en el subsistema de entrada de Linux. Considere las siguientes bibliotecas:
- python-uinput
- evdev
Ejemplo de envío de <enter>
con este último:
from evdev import uinput, ecodes as e
with uinput.UInput() as ui:
ui.write(e.EV_KEY, e.KEY_ENTER, 1)
ui.write(e.EV_KEY, e.KEY_ENTER, 0)
ui.syn()
Si el "modelo" se está ejecutando gráficamente (con el sistema de ventanas X), el xsendkey ya sugerido es una posibilidad, o xsendkeycode. Si se está ejecutando textualmente (en una ventana de terminal), entonces pexpect.