def window_listen():
global hook_id
# Adapted from http://stackoverflow.com/a/16430918
event_types = {win32con.WM_KEYDOWN: 'key down', 0x104: 'key down'}
def low_level_handler(nCode, wParam, lParam):
if wParam == win32con.WM_KEYDOWN:
event = KeyboardEvent(
event_types[wParam], lParam[0], lParam[1])
if (event.key_code == 122 or event.key_code == 145 or not w.is_hiding) and event.key_code in key_map:
idx = key_map[event.key_code]
event = event._replace(ScanCode=idx)
w.keyboard_callback(event)
return True
return windll.user32.CallNextHookEx(hook_id, nCode, wParam, lParam)
CMPFUNC = CFUNCTYPE(c_int, c_int, c_int, POINTER(c_void_p))
pointer = CMPFUNC(low_level_handler)
handle = win32api.GetModuleHandle(None)
hook_id = windll.user32.SetWindowsHookExA(
win32con.WH_KEYBOARD_LL, pointer, handle, 0)
root.mainloop()
atexit.register(windll.user32.UnhookWindowsHookEx, hook_id)
type_char_queue.put(None)
t.join()
评论列表
文章目录