Como segurar com eficiência uma chave no Pygame?

[EDIT] Publiquei a solução lá em baixo. [/EDITAR]

Encontrei duas perguntas relacionadas:

Pygame mantenha pressionada a tecla causa um loop infinitopygame - botão de espera pressionado

Mas eu quero ser específico. Como?

while not done:
    for e in event.get():
        if e.type == KEYDOWN:
            keys = key.get_pressed()
            if e.type == QUIT or keys[K_ESCAPE]:
                done = True
            if keys[K_DOWN]:
                print "DOWN"

Quando pressiono a seta para baixo, ela imprime, mas apenas uma vez. Se quiser imprimi-lo outra vez, preciso pressioná-lo novamente.

Se eu usar a palavra-chave while,

while keys[K_DOWN]:
    print "DOWN"

Eu recebo um loop infinito por algum motivo obscuro.

Essa alternativa lógica também é inútil:

if ((e.type == KEYDOWN) and keys[K_DOWN]):
    print "DOWN"

E existe outro que de alguma forma limpa os eventos e você pode usar enquanto:

while not done:
    for e in event.get():
        if e.type == KEYDOWN:
            keys = key.get_pressed()
            if e.type == QUIT or keys[K_ESCAPE]:
                done = True
            while keys[K_DOWN]:
                print "DOWN"
                event.get()
                keys = key.get_pressed()

Mas você pressiona a tecla para baixo por menos de um segundo e ela imprime milhares de vezes. (Mover um jogador seria impossível, e ajustar o relógio para isso não parece ser o caminho certo para lidar com isso (e eu tentei e falhei miseravelmente.)).

Pressionar e executar o bloco milhares de vezes é inútil. O que eu quero é pressionar a tecla e continuar com a ação enquanto eu não a libero, dentro da velocidade definida do relógio.

questionAnswers(7)

yourAnswerToTheQuestion