Я хочу определять клавиши (например, стрелка вверх), когда они нажимаются непрерывно, даже после нажатия другой клавиши (например, алфавит «а»).
Моя цельсделать интерфейс для вождения автомобиля.Чтобы дать ускорение автомобилю, я бы непрерывно удерживал «стрелку вверх», повторяя ее (программа обнаруживает коды непрерывного сканирования «стрелки вверх» - при ее непрерывном нажатии - и поддерживал обороты двигателя).
Но когда для изменения угла поворота нажимается стрелка влево или вправо, коды сканирования «стрелка вверх» больше не отправляются, хотя клавиша «вверх» все еще физически нажата. То же самое происходит, когда я нажимаю любую другую клавишу, т. Е. Если нажимать клавишу «a» алфавита, чтобы переключить передачу, ускорение падает (поскольку непрерывное нажатие «стрелки вверх» не определяется). Как узнать, удерживается ли стрелка «вверх» нажатой даже после другого нажатия клавиши?
Пример кода:
while(True):
k = cv2.waitKeyEx(1)
# Scan Codes for Arrow keys
# 2490368 up - for gas_pedal
# 2621440 down - for break
# 2424832 left - to turn left
# 2555904 right - to turn right
# a = to shift gear up
# z = to shift gear down
# n = to shift to neutral (from all gears)
if (k==2490368):
if (gas_pedal < 5): # max value of gas = 5
gas_pedal += 0.5
elif (k==2621440):
if (brake_pedal < 5): # max value of break = 5
brake_pedal += 0.5
elif (k==2555904):
degrees += 3
elif (k==2424832):
degrees -= 3
elif (k == ord('a')):
if (gear < 5):
gear += 1
elif (k == ord('z')):
if (gear > 0):
gear -= 1
elif (k == ord('g')):
gear = 0
else:
if (gas_pedal > 0.01):
gas_pedal -= 0.005
if (brake_pedal > 0.01):
brake_pedal -= 0.005