Quick answer: Compare event.key == pygame.K_LEFT. event.unicode is empty for non-printable.

Arrow key UI navigation. event.unicode check returns empty. KEYDOWN fires; you're reading the wrong attribute.

The Fix

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:
            move_left()
        elif event.key == pygame.K_RIGHT:
            move_right()
        elif event.unicode == "a":
            # printable only
            type_a()

event.key for keycodes (printable + special). event.unicode for printable text input. Don’t mix.

Verifying

Arrow keys move; printable keys type. Both work in same loop.

“event.key for codes. event.unicode for text.”

Related Issues

For event loop lag, see event lag. For mousewheel, see mousewheel.

event.key. Arrows fire.