How would a basic project in PyGame look like? I'd like the example to include keyboard event handling so that pressing ESC will quit the game and also print the FPS counter in the left top corner of the window.
Certainly! Here's an example of a basic PyGame project that includes keyboard event handling and an FPS counter:
```python
import pygame

pygame.init()

# Set up the display
display_width = 800
display_height = 600
game_display = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('My PyGame Project')

# Set up the clock
clock = pygame.time.Clock()

# Set up the font for the FPS counter
font = pygame.font.SysFont(None, 25)

def main_loop():
    # Set up the game loop
    game_exit = False
    while not game_exit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_exit = True
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    game_exit = True

        # Clear the display
        game_display.fill((255, 255, 255))

        # Draw the FPS counter
        fps = str(int(clock.get_fps()))
        fps_text = font.render(fps, True, (0, 0, 0))
        game_display.blit(fps_text, (10, 10))

        # Update the display
        pygame.display.update()

        # Tick the clock
        clock.tick(60)

    pygame.quit()
    quit()

main_loop()
```
This example sets up a PyGame window with a title, handles keyboard events to allow the player to quit the game with the ESC key, and displays an FPS counter in the top left corner of the window. The main_loop function runs the game loop, which clears the display, draws the FPS counter, updates the display, ticks the clock, and checks for keyboard events to quit the game.