2011-04-19 185 views
14

如何模拟python中的按键?我也想同时按下多个键。使用Python模拟Linux中的按键

喜欢的东西:

keystroke('CTRL+F4') 

keystroke('Shift+A') 
+0

我可以问你为什么要这么做?还有,在哪种环境下?命令行?图形桌面? – 2011-04-19 09:13:10

回答

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) 
+1

如何将密钥发送到shell? – user2988257 2016-08-30 08:58:35

14

python-uinput

Python的API到Linux uinput内核模块...

Python的uinput是Python接口到Linux uinput kern el模块,它允许将用户空间设备驱动程序连接到内核。在实践中,Python的uinput使得它死了简单的创建虚拟操纵杆,键盘和鼠标进行编程产生任意输入事件......

+3

我可以用小写字母排出吗?请举例! – karensantana 2013-04-11 22:22:45

+0

链接已死 – 2017-04-06 10:56:26

1

如果您使用的是Windows,使用Sendkeys如果在Linux上,尝试建议用于xsendkeys或pexpect的given here

10

考虑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() 
+0

我尝试了类似的代码,它是因为我在系统日志中看到一个新的虚拟输入设备已创建但按键不出现在X中?任何特殊的事情都可以做,所以密钥由X服务器接收? – akostadinov 2013-07-05 10:18:46

+0

链接已死 – 2017-04-06 10:56:42