使用Python模拟Linux中的击键

mic*_*oo8 15 python linux simulation keystroke

如何在python中模拟击键?我也想同时按下多个键.

就像是:

keystroke('CTRL+F4')
Run Code Online (Sandbox Code Playgroud)

要么

keystroke('Shift+A')
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 15

python-uinput:

Linux输入内核模块的Pythonic API ...

Python-uinput是Linux uinput内核模块的Python接口,允许将用户空间设备驱动程序附加到内核中.在实践中,Python-uinput使得创建虚拟游戏杆,键盘和鼠标以编程方式生成任意输入事件变得非常简单......

  • 我可以用小写字母发射吗?请举个例子!! (4认同)
  • 链接已失效 (2认同)

Mar*_*air 13

虽然它特定于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)
Run Code Online (Sandbox Code Playgroud)

  • 如何将密钥发送到外壳? (2认同)

gva*_*kov 13

考虑python-uinputevdev.shift+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()
Run Code Online (Sandbox Code Playgroud)

  • 它给了我这个错误: `UInputError: "/dev/uinput" 无法打开进行写入` 有什么建议吗? (2认同)