Determine length of keypress in python

#Using pynput module: (Best)

You can use this code:

from pynput import keyboard 
import time

def on_key_release(key): #what to do on key-release
    time_taken = round(time.time() - t, 2) #rounding the long decimal float
    print("The key",key," is pressed for",time_taken,'seconds')
    return False #stop detecting more key-releases

def on_key_press(key): #what to do on key-press
    return False #stop detecting more key-presses

with keyboard.Listener(on_press = on_key_press) as press_listener: #setting code for listening key-press
    press_listener.join()

t = time.time() #reading time in sec

with keyboard.Listener(on_release = on_key_release) as release_listener: #setting code for listening key-release
    release_listener.join()

#Using pygame: (Good)

import time
import pygame
import os
os.environ["SDL_VIDEO_CENTERED"] = "1"

screen = pygame.display.set_mode((600, 600))
pygame.display.set_caption("Time")
clock = pygame.time.Clock()

pygame.init()

clock = pygame.time.Clock()

running = True       
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            pygame.quit()
            break
        if event.type == pygame.KEYDOWN:
            # detect key 'a'
            if event.key == pygame.K_a: # key 'a'
                t = time.time()
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_a: # key 'a'
                t = time.time() - t; t = str(t); t = t[:5]
                print("You pressed key 'a' for",t,'seconds')
            

        screen.fill((255, 255, 255))
        pygame.display.update()

        clock.tick(40)

It will only detect the keys that you will write in the code.

Use pip install pynput to install pynput.
Use pip install pygame to install pygame.

Leave a Comment