Simulate keystroke in Linux with Python
python-uinput:
Pythonic API to Linux uinput kernel module...
Python-uinput is Python interface to Linux uinput kernel module which allows attaching userspace device drivers into kernel. In practice, Python-uinput makes it dead simple to create virtual joysticks, keyboards and mice for generating arbitrary input events programmatically...
If you plan to use it on Linux, try pyautogui library. For multiple keys you will need to use hotkey, e.g.:
pyautogui.hotkey('ctrl', 'c') # ctrl-c to copy
For me it worked - see here: How to pass a keystroke (ALT+TAB) using Popen.communicate (on Linux)?
Consider python-uinput and evdev. Example of shift+a
with the latter:
from evdev import uinput, ecodes as e
with uinput.UInput() as ui:
ui.write(e.EV_KEY, e.KEY_LEFTSHIFT, 1)
ui.write(e.EV_KEY, e.KEY_A, 1)
ui.syn()
Although it's specific to X, you can install the xautomation package (apt-get install xautomation
on Debian-based systems) and use xte
to simulate keypresses, e.g.:
from subprocess import Popen, PIPE
control_f4_sequence = '''keydown Control_L
key F4
keyup Control_L
'''
shift_a_sequence = '''keydown Shift_L
key A
keyup Shift_L
'''
def keypress(sequence):
p = Popen(['xte'], stdin=PIPE)
p.communicate(input=sequence)
keypress(shift_a_sequence)
keypress(control_f4_sequence)