2011-04-19 2 views
14

어떻게 파이썬에서 키 입력을 시뮬레이트 할 수 있습니까? 여러 개의 키를 동시에 누르기를 원합니다. 같은Python을 사용하여 Linux에서 키 입력을 시뮬레이트

뭔가 :

keystroke('CTRL+F4') 

또는

keystroke('Shift+A') 
+0

물어 봐도 될까요? 또한 어떤 환경에서? 명령 줄? 그래픽 데스크탑? –

답변

13

, 당신은 xautomation 패키지 (데비안 기반 시스템에서 apt-get install xautomation)를 설치하고 키 누름을 시뮬레이션 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

어떻게 키를 셸로 보낼 수 있습니까? – user2988257

14

python-uinput : 리눅스 uinput 커널 모듈에

파이썬 API ...

파이썬 uinput 파이썬 인터페이스이다 Linux 사용자 삽입 이미지 el 모듈을 사용하여 사용자 공간 장치 드라이버를 커널에 연결할 수 있습니다. 실제로, 파이썬은-uinput는 윈도우에있는 경우, Sendkeys를 사용

+3

소문자로 내보낼 수 있습니까? 예를 들어주세요 !! – karensantana

+0

링크가 죽었습니다 –

1

가 죽은 간단한 ... 프로그래밍 임의의 입력 이벤트를 생성하는 가상 조이스틱, 키보드와 마우스를 만들 수 있습니다 및 Linux 경우, 제안을 시도 xsendkeys 또는 pexpect의 경우 given here입니다. 이 X 특정 비록

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

+0

링크가 작동하지 않습니다. –