2011-04-19 6 views
14

के साथ लिनक्स में कीस्ट्रोक सिम्युलेट करें मैं पाइथन में एक कीस्ट्रोक कैसे अनुकरण कर सकता हूं? मैं एक साथ कई चाबियाँ भी दबा देना चाहता हूं।पाइथन

कुछ की तरह:

keystroke('CTRL+F4') 

या

keystroke('Shift+A') 
+0

मैं पूछ सकता है कि आपको यह करना चाहते हैं? इसके अलावा, किस पर्यावरण के तहत? कमांड लाइन? ग्राफिकल डेस्कटॉप? –

उत्तर

13

हालांकि यह एक्स के लिए विशिष्ट है, तो आप xautomation पैकेज (apt-get install xautomation डेबियन-आधारित सिस्टम पर) स्थापित कर सकते हैं और xte का उपयोग keypresses अनुकरण करने के लिए, उदा .:

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

मैं खोल में चाबियाँ कैसे भेज सकता हूं? – user2988257

14

python-uinput:

लिनक्स uinput कर्नेल मॉड्यूल के लिए pythonic एपीआई ...

अजगर-uinput अजगर इंटरफेस है लिनक्स uinput कर्न के लिए एल मॉड्यूल जो उपयोगकर्ता स्पेस ड्राइवरों को कर्नेल में संलग्न करने की अनुमति देता है। अभ्यास में, अजगर-uinput यह मृत सरल मनमाने ढंग से इनपुट ईवेंट प्रोग्राम के रूप में पैदा करने के लिए आभासी जॉयस्टिक, कीबोर्ड और चूहों बनाने के लिए ...

+3

क्या मैं लोअरकेस में उत्सर्जित कर सकता हूं? कृपया एक उदाहरण !! – karensantana

+0

लिंक मर चुका है –

1

आप Windows पर हैं, Sendkeys का उपयोग करता है और लिनक्स पर हैं, सुझाव की कोशिश Xsendkeys या pexpect के लिए given here

10

पर विचार करें python-uinput और evdev। बाद के साथ 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

मैंने इसी तरह की कोड की कोशिश की, यह exeuted है क्योंकि मैं सिस्टम लॉग में देखता हूं कि एक नया आभासी इनपुट डिवाइस बनाया गया था लेकिन कीस्ट्रोक एक्स में दिखाई नहीं दे रहा है? किसी भी विशेष चीज को किया जा सकता है ताकि चाबियाँ एक्स सर्वर द्वारा प्राप्त की जा सकें? – akostadinov

+0

लिंक मर गए हैं –

0

आप लिनक्स पर इसका इस्तेमाल करने की योजना है, pyautogui पुस्तकालय का प्रयास करें। एकाधिक कुंजियों के लिए आप हॉटकी का उपयोग करने, उदा .:

pyautogui.hotkey('ctrl', 'c') # ctrl-c to copy 

मुझे यह काम करने के लिए की आवश्यकता होगी - यहाँ देखें: How to pass a keystroke (ALT+TAB) using Popen.communicate (on Linux)?