[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Key Presses



Ian,

Using the unicode event attribute seems to do the trick.

import sys
import pygame
from pygame.locals import *

pygame.init()

screen = pygame.display.set_mode((320,200))

Message = ''
TypingMessage = 1

valid_keys = filter (
   lambda c: r'\x' not in `c`,
   [
       chr(c) for c in
       [getattr(pygame, k) for k in dir(pygame) if k.startswith('K_')]
       if 0 <= c <= 255
   ]
)

def is_quitting(event):
   return (
        event.type == QUIT or
      ( event.type == KEYDOWN and event.key == K_ESCAPE )
   )

print valid_keys

while True:
for event in pygame.event.get(): if event.type == KEYDOWN:
           if 0:
               pass

           elif event.key == K_BACKSPACE and TypingMessage:
               Message = Message[:-1]

           elif TypingMessage:
               if event.unicode in valid_keys: Message += event.unicode
print Message

       if is_quitting(event):  sys.exit(Message)