Movimiento con teclas

Hola muchachos como estan?
Tengo un personaje tipo RPG, el movimiento lo hago con este codigo:
Dentro del codigo del personaje tengo esto:

    self.pilas.eventos.pulsa_tecla.conectar(self.cuando_pulsa_una_tecla)

    def cuando_pulsa_una_tecla(self, evento):
        distanciaDePaso = 40
        espj = self.espejado
        if evento.codigo == self.pilas.simbolos.a and not self.isEnBatalla():
            espj = True
            self.caminarHacia(X=(self.x -distanciaDePaso), Y = self.y, inmediatamente = True)
        if evento.codigo == self.pilas.simbolos.d and not self.isEnBatalla():
            self.caminarHacia(X=(self.x +distanciaDePaso), Y = self.y, inmediatamente = True)
            espj = False
        if evento.codigo == self.pilas.simbolos.w and not self.isEnBatalla():
            self.caminarHacia(X=self.x, Y = (self.y +distanciaDePaso), inmediatamente = True)
        if evento.codigo == self.pilas.simbolos.s and not self.isEnBatalla():
            self.caminarHacia(X=self.x, Y = (self.y -distanciaDePaso), inmediatamente = True)
        self.hacer(Comportamiento.Ready, espj)`

En lo funcional:

Cuando se preciona una tecla, verifica cual es, y llama a la funcion “cambinarHacia”, que a su vez, pone a “self” bajo el comportamiento “Caminando”.
hasta ahora funciona perfecto.
Cuando pulsas una tecla camina perfectamente.¿Cual es el problema? se esta capturando el evento al pulsar una tecla, no funciona con mantenerla.

La cosa es asi. como capturo el evento “Mantener una tecla”
Vi un ejemplo en el manual: (El del Alien)

class Alien(pilasengine.actores.Actor):

    def iniciar(self):
        self.imagen = "alien.png"

    def saludar(self):
        self.decir("Hola mundo!!!, soy el nuevo actor alien")

    def dar_vuelta(self):
        self.rotacion = [360]

    def actualizar(self):
        if pilas.control.izquierda:
            self.x -= 5
            self.espejado = True
        if pilas.control.derecha:
            self.x += 5
            self.espejado = False

Pero solo funciona con esos controles, y no con todas las teclas. COmo capturo las otras teclas como las letras?

Espero haber sido especifico en mi consulta! Muchas gracias de antemano! Saludos!

Hola @Kantabria,tal vez lo que podrías hacer es crear un objeto Control personalizado, mirá este ejemplo donde se personaliza el control con las teclas “w, a, s, d”:

Muchas gracias por tu respuesta!

Me sirvió mucho, pero tengo un drama, que lo estuve viendo, y si, basicamente funciona, pero. Yo lo que necesito es que, ejecuta un comportamiento creado por mi.
Tenemos acceso al codigo de “MoverseConElTeclado”? seguro si creo uno a partir de eso, no habia mas dramas.

Hola @Kantabria, te paso el código de la habilidad MoverseConElTeclado:

Fijate que desde el intérprete también se puede acceder al código de pilas, por ejemplo escribiendo: pilas.ver(pilas.habilidades)

Muchas gracias! Me va a ser de mucha ayuda.

Resuelto!
Ahi va:

Instancie un objeto Control que mencionaste @hugoruscitti, pero en ves de pasarlo por medio de ese metodo, (Ya que esa habilidad no me sirve) se lo pase al actor.
El actor tiene el objeto mi_control.

Entonces, en el metodo actualizar (De ambos comportamientos) captura
self.receptor.control.$variable
Listo… y muchas gracias! Vamos que me acerco a terminarlo.