2014-02-13 2 views
1

python 스크립트를 실행하는 동안 CTRL | SHIFT | ALT가 눌러져 있는지 감지하고 싶습니다. SHIFT 키를 누른 상태에서 스크립트를 실행하면 GUI 대신 명령 줄 대신 열리는 팝업 창이 나타납니다.파이썬 ctypes로 Shift 키 누르기 감지

msvcrt.kbhit에서 SHIFT 키 프레스를 감지 할 수 없어서 파기를했기 때문에 매우 유망 해 보였던 solution를 발견했습니다. 테스트로 핫키 목록에 SHIFT를 추가했습니다. 불행하게도 아래의 코드를 dos 쉘에서 사용하면 ESC와 NUMLOCK 키가 올바르게 인식되지만 SHIFT 키는 인식하지 못하고 그 이유를 알 수 없습니다.

모든 통찰력을 주시면 감사하겠습니다.

import ctypes, ctypes.wintypes 
import win32con 

# Register hotkeys 
ctypes.windll.user32.RegisterHotKey(None, 1, 0, win32con.VK_ESCAPE) 
ctypes.windll.user32.RegisterHotKey(None, 1, 0, win32con.VK_NUMLOCK) 
ctypes.windll.user32.RegisterHotKey(None, 1, 0, win32con.VK_LSHIFT) 
ctypes.windll.user32.RegisterHotKey(None, 1, 0, win32con.VK_RSHIFT) 

# Loop until one of the hotkeys are pressed 
try: 
    msg = ctypes.wintypes.MSG() 
    while ctypes.windll.user32.GetMessageA(ctypes.byref(msg), None, 0, 0) != 0: 
     if msg.message == win32con.WM_HOTKEY: 
      print("KEY PRESSED!") 

     ctypes.windll.user32.TranslateMessage(ctypes.byref(msg)) 
     ctypes.windll.user32.DispatchMessageA(ctypes.byref(msg)) 

# Cleanup 
finally: 
    ctypes.windll.user32.UnregisterHotKey(None, 1) 

답변

관련 문제