зажатие клавиш на PyGame

При реализации настройки управления столкнулся с проблемой - как реализовать зажатие клавиш.

Из статей понял, что надо работать с KEYDOWN и KEYUP, но во множестве попыток использования их (пытался как с использованием while так и сложным спагетти из if и переменных) программа либо зависала с переходом в "не отвечает", либо просто не реагировала на нажатия клавиш.

В коде использую матрицу key_act, где каждая строка является [ссылка на клавишу, ссылка на функцию, зажатая/не зажатая]. Пример: [pygame.K_w, f, False]. Собственно из-за этой матрицы появляется много сложностей.

Как можно реализовать зажатие клавиш в этом коде, сохранив возможность настройки клавиш?

while True:

    for event in pygame.event.get():

        if event.type == pygame.QUIT: # выход               
            pygame.quit()
            exit ()

        for i in key_act:

            if i[2] == False: #одинарное нажатие
                if  event.type == pygame.KEYDOWN:
                    if event.key == i[0]:
                        i[1] ()

            else: #зажатие
                pass

Ответы (0 шт):