2011-04-19 184 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