使用 Python 在 Linux 中模拟按键
- 2024-10-24 08:50:00
- admin 原创
- 195
问题描述:
如何在 Python 中模拟按键?我还想同时按下多个键。
类似于:
keystroke('CTRL+F4')
或者
keystroke('Shift+A')
解决方案 1:
考虑python-uinput和evdevshift+a
。后者的示例:
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()
解决方案 2:
python-uinput:
Pythonic API 到 Linux uinput 内核模块......
Python-uinput 是 Linux uinput 内核模块的 Python 接口,允许将用户空间设备驱动程序附加到内核。实际上,Python-uinput 可以非常轻松地创建虚拟操纵杆、键盘和鼠标,以便以编程方式生成任意输入事件...
解决方案 3:
尽管它是特定于 X 的,但您可以安装 xautomation 包(apt-get install xautomation
在基于 Debian 的系统上)并使用它xte
来模拟按键,例如:
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)
解决方案 4:
如果您打算在 Linux 上使用它,请尝试pyautogui库。对于多个键,您需要使用热键,例如:
pyautogui.hotkey('ctrl', 'c') # ctrl-c to copy
对我来说它有效 - 请参阅此处:
如何使用 Popen.communicate 传递按键(ALT+TAB)(在 Linux 上)?
解决方案 5:
如果您使用的是 Windows,请使用Sendkeys ;如果使用的是 Linux,请尝试此处针对 xsendkeys 或 pexpect 给出的建议。
解决方案 6:
我发现最简单的解决方案是使用pynput。您可以执行以下操作:
from pynput.keyboard import Key, Controller
keyboard = Controller()
with keyboard.pressed(Key.ctrl):
keyboard.press(Key.f4)
keyboard.release(Key.f4)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD