2016-10-03 14 views
0

msvcrt.getch() 메서드를 통해 키 누르기를 수신하기 위해 파이썬에서 msvcrt 패키지를 사용할 수 있기를 원하지만 터미널 창에 포커스가 있어야합니다 일하다. 이 문제를 해결할 방법이 있습니까?터미널 창의 포커스가 맞지 않을 때 MSVCRT를 사용하여 Python으로 Windows에서 Keypresses 잡기

+0

, 프로세스는 getch' 분명히 전경 처리해야한다'호출. 규칙을 변경할 수 없습니다. 그러나, 당신은 해결하려고하는 실제 문제에 대해 묻지 않았습니다. 이게 뭐야? – IInspectable

+0

글쎄, 내 키보드의 키를 누를 때 파이썬이 LED 스트립을 제어하는 ​​arduino에 메시지를 보내고 있기 때문에 터미널 창에 포커스가 없을 때에도 키 누르기를 감지 할 수 있기를 원합니다. 백그라운드에서 창을 영구히 유지할 수있는 방법이 있습니까? –

+0

* "백그라운드에서 창을 영속적으로 만들 수있는 방법이 있습니까?"* - 음 ... 아니요, 그렇더라도 창을 포 그라운드로 가져 오지 않습니다 (getch() '의미있는 일을하는 것). 포어 그라운드 프로세스없이 입력을 모니터링하려면 [Raw Input] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx)과 같은 것이 필요합니다. [하위 수준 키보드 훅] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644985.aspx) – IInspectable

답변

0

@IInspectable에서 제안한 Ctypes 용 파이썬 래퍼를 발견했습니다. low_level 키보드 후크를 멋진 모니터 클래스로 래핑합니다. 입력이 오직 전경 창으로 이동하기 때문에

https://github.com/ethanhs/pyhooked

+0

[낮은 수준의 키보드 고리] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644985.aspx) 설명서에서이 메모를 읽었습니까? 여기에 있습니다 : * "[...] 응용 프로그램이 낮은 수준의 후크를 사용해야하는 대부분의 경우 ** 원시 입력을 모니터해야합니다 ** 이것은 원시 입력이 대상인 마우스 및 키보드 메시지를 비동기 적으로 모니터 할 수 있기 때문입니다 원시 입력에 대한 자세한 내용은 [원시 입력] (https://msdn.microsoft.com/en-us/library/ms645536(vs.85) .aspx)을 참조하십시오. "* – IInspectable

+0

나는 여기에 LED를 비추고있다. 우주에 대한 답을 정확히 계산하지는 않습니다. 내 구현은 현재 충분히 빠릅니다. –

+0

권장 사항은 응용 프로그램에만 해당되는 것은 아닙니다. 저수준 키보드 후크는 전체 시스템에 성능에 영향을 미칩니다. 모든 키보드 입력에 대해 두 개의 추가 컨텍스트 스위치와 이벤트 처리에 걸리는 시간이 추가됩니다. 그리고 Stack Overflow는 Q & A 사이트이기 때문에 누군가가 여러분의 질문을 찾을 수 있으며 ** ** 우주에 대한 답을 계산하고 있습니다. – IInspectable