Во-первых, GetAsyncKeyState()
Также необходимо AND (&) 0x8000, чтобы убедиться, что ключ не работает.
Возвращаемое значение
Тип: SHORT
Еслифункция завершается успешно, возвращаемое значение указывает, была ли клавиша нажата с момента последнего вызова GetAsyncKeyState, и была ли клавиша в данный момент вверх или вниз.Если установлен старший значащий бит, клавиша нажата, а если установлен младший значащий бит, клавиша была нажата после предыдущего вызова GetAsyncKeyState.
Обратите внимание, что возвращаемое значение - битзакодировано (не логическое).Вы должны очистить младший значащий бит вроде:
keyState = win32api.GetAsyncKeyState(17)&0x8000.
И есть простое решение без оконного фокуса в python.Вы можете получить его через pynput .
Командная строка:
> pip install pynput
Код Python:
from pynput import keyboard
def on_press(key):
try: k = key.char # single-char keys
except: k = key.name # other keys
if key == *(which you want to set):#To Do.
lis = keyboard.Listener(on_press=on_press)
lis.start() # start to listen on a separate thread
lis.join() # no this if main thread is polling self.keys