2010-04-04 47 views
12

Tôi đang viết một kịch bản để tự động chạy một mô hình cụ thể. Khi mô hình không thành công, nó sẽ đợi đầu vào của người dùng (phím Enter). Tôi có thể phát hiện khi mô hình đã thất bại, nhưng tôi không thể sử dụng python (trên linux) để mô phỏng một sự kiện nhấn phím. Windows có thư viện SendKeys để làm điều này nhưng tôi đã tự hỏi nếu có một thư viện tương tự cho python trên Linux.Mô phỏng sự kiện Nhấn phím bằng Python cho Linux

Cảm ơn!

Trả lời

6

Nếu "mô hình" đang chạy đồ họa (với hệ thống cửa sổ X), các đã đề nghị-xsendkey là một khả năng, hoặc xsendkeycode. Nếu nó đang chạy văn bản (trong cửa sổ đầu cuối), thì pexpect.

+0

Cảm ơn! pecpect nên làm các trick cho tôi. – user308827

+0

Xin chào! Một hệ quả tất yếu: Trong khi sử dụng Pexpect, chương trình đơn giản sau đây dường như không làm việc cho tôi: nhập khẩu Pexpect con = pexpect.spawn ('ls') fout = file ('output.txt', 'w ') child.logfile = fout Tức là tệp output.txt được tạo nhưng trống khi tôi tạo chú mèo. pexpect được cài đặt tốt, vì tôi có thể chạy các mẫu được cung cấp cùng với chương trình. Mọi đề xuất sẽ được đánh giá cao! cảm ơn! – user308827

+7

Các liên kết đến 'xsendkey' và' xsendkeycode' đã chết. – hazzey

4

Cách tiếp cận cấp thấp hơn sẽ là tạo một thiết bị uinput mà từ đó bạn sẽ chèn các sự kiện đầu vào vào hệ thống con đầu vào của Linux. Hãy xem xét các thư viện sau:

Ví dụ về gửi <enter> với cái sau:

from evdev import uinput, ecodes as e 

with uinput.UInput() as ui: 
    ui.write(e.EV_KEY, e.KEY_ENTER, 1) 
    ui.write(e.EV_KEY, e.KEY_ENTER, 0) 
    ui.syn() 
12

Có một cái nhìn tại https://github.com/SavinaRoja/PyUserInput kiểm soát này của nó cross-nền tảng cho chuột và bàn phím trong python

Điều khiển bàn phím hoạt động trên các hệ thống X11 (Linux) và Windows. Nhưng không hỗ trợ mac (khi tôi viết câu trả lời này).

from pykeyboard import PyKeyboard 
k = PyKeyboard() 

# To Create an Alt+Tab combo 
k.press_key(k.alt_key) 
k.tap_key(k.tab_key) 
k.release_key(k.alt_key) 
+0

Bạn có biết cách 'gõ' phím cách không? – user3768495

+0

Hãy xem các projs này, phím khoảng trắng phải được ánh xạ tới '' (chuỗi có khoảng trống trong đó) https: // github.com/Narengowda/web-mouse/blob/master/web_mouse/mouse_wsh.py # L62 https://github.com/SavinaRoja/PyUserInput/blob/master/pykeyboard/x11.py#L28 – naren

+0

Tôi đã đưa ra một cái gì đó như 'k.tab_key (k.keypad_keys ['Space'])' nhưng nó không hoạt động. Thật khó cho tôi để hiểu tài liệu dự án. Bạn có thể giúp? – user3768495

1

Tôi khuyên bạn nên PyAutoGui. Nó rất đơn giản để sử dụng, đó là nền tảng chéo và nó dành cho Python 3 và 2.

Trong trang được liên kết được liệt kê các phụ thuộc và một số ví dụ mã.

Các vấn đề liên quan