2010-04-04 9 views
12

Piszę skrypt, aby zautomatyzować uruchamianie określonego modelu. Gdy model zawiedzie, oczekuje na dane wprowadzone przez użytkownika (klawisz Enter). Mogę wykryć, kiedy model zawiódł, ale nie jestem w stanie użyć Pythona (na Linuksie) do symulacji kluczowego zdarzenia prasowego. Windows ma bibliotekę SendKeys, aby to zrobić, ale zastanawiałem się, czy istnieje podobna biblioteka dla Pythona na Linuksie.Symulowanie zdarzenia naciśnięcia klawisza przy użyciu języka Python dla systemu Linux

Dzięki!

Odpowiedz

6

Jeśli "model" jest uruchomiony graficznie (z systemem X Window), przy czym już zasugerował xsendkey możliwość lub xsendkeycode. Jeśli działa on tekstowo (w oknie terminala), to pexpect.

+0

Dzięki! pecpect powinien mi załatwić sprawę. – user308827

+0

Cześć! Następstwem: Podczas korzystania pexpect następujący prosty program nie wydają się działać dla mnie: import pexpect potomnych = pexpect.spawn ('ls') FOUT = file ('', „Output.txt w ') child.logfile = fout Tj. Plik output.txt jest tworzony, ale jest pusty, gdy go uruchomię. Pexpect jest zainstalowany dobrze, ponieważ mogę uruchomić próbki dostarczone z programem. Wszelkie sugestie będą mile widziane! dzięki! – user308827

+7

Łącza do 'xsendkey' i' xsendkeycode' są martwe. – hazzey

4

Bardziej niskopoziomowym podejściem byłoby utworzenie urządzenia uinput, z którego następnie wprowadzano by zdarzenia wejściowe do podsystemu wejściowego Linux. Rozważmy następujące biblioteki:

Przykład wysyłania <enter> z nim:

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

Zapraszamy do obejrzenia tej https://github.com/SavinaRoja/PyUserInput jego kontroli cross-platform dla mysz i klawiatura w pytonie

Sterowanie klawiaturą działa na systemach X11 (Linux) i Windows. Ale bez wsparcia dla maców (kiedy napisałem tę odpowiedź).

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

Czy wiesz, jak "dotknąć" klawisza spacji? – user3768495

+0

Spójrz na tych projs, klucz spacji musi być zmapowany do '' (ciąg znaków z spacji) 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

Wymyśliłem coś takiego 'k.tab_key (k.keypad_keys ['Space'])' ale to nie działa. Trudno mi zrozumieć dokumentację projektu. Czy mógłbyś mi pomóc? – user3768495

1

Polecam PyAutoGui. Jest to niezwykle proste w użyciu, jest wieloplatformowe i jest przeznaczone dla Pythona 3 i 2.

Na stronie z linkami są wymienione zależności i przykłady niektórych kodów.

Powiązane problemy