2011-04-19 30 views
14

Python'da bir tuş vuruşu nasıl simüle edebilirim? Aynı anda birden çok tuşa basmak istiyorum. gibiPython ile Linux'ta tuş vuruşunu simüle edin

şey:

keystroke('CTRL+F4') 

veya

keystroke('Shift+A') 
+0

sorabilir miyim? Ayrıca hangi ortamda? Komut satırı? Grafiksel Masaüstü? –

cevap

13

, sen xautomation paketini (Debian tabanlı sistemlerde apt-get install xautomation) yükleyip basılmasını simüle etmek xte kullanın ör .:

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

Kabuk için anahtarları nasıl gönderebilirim? – user2988257

14

python-uinput: Linux uinput çekirdek modülü için

Pythonictir API ...

Python uinput Python arayüzü Linux uinput kern'e kullanıcı arabirimi sürücülerini çekirdeğe eklemeyi sağlayan el modülü. Uygulamada, Python uinput Windows üzerinde iseniz, Sendkeys kullanmak

+3

Küçük harflerle yayabilir miyim? lütfen bir örnek! – karensantana

+0

Bağlantı kesildi –

1

ölü basit ... programlı keyfi giriş işlemlerini üretmek için sanal joystick, klavye ve fareler oluşturmayı kolaylaştırır ve Linux üzerinde ise, öneri denemek Xsendkeys veya pexpect için given here. o X'e özgü olsa

10

python-uinput ve evdev düşünün edebilirsiniz. ikincisi ile shift+a örneği: Linux üzerinde kullanmayı planlıyorsanız

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

Benzer kod denedim, çünkü sistem günlüğünde yeni bir sanal girdi aygıtının oluşturulduğunu görüyorum, ancak tuş vuruşları X'te görünmüyor mu? Anahtarlar X sunucusu tarafından alındığından özel bir şey yapılabilir mi? – akostadinov

+0

Bağlantılar öldü –

İlgili konular