@window.event
def on_key_press(symbol, modifiers):

a) eliminates all previously registered handlers for on_key_press events
b) registers the function as a handler for on_key_press events.

So, if you want to use

 @window.event
def on_key_press(symbol, modifiers):

and

window.push_handlers(keyboard)

the later must be after the first in the code, or else the KEYMAP handler
will be discarded.

On Sat, May 11, 2013 at 12:54 AM, elliot <[email protected]> wrote:

> If I set up a KeyStateHandler, then using on_key_press seems to make all
> the entries in the handler dictionary false.  If i delete the on_key_press
> function, the handler dictionary works as expected.  I tried subclassing
> the KeyStateHandler and trying to use it separately as a dictionary
> (seperate from the @window.event decorated on_key_press), and I tried
> defining my on_key_press in there, and in both cases the presence on an
> on_key_press function makes everything in the dictionary false.
>
> If I want to use both ('on key press' and 'is the button still held
> down'), do I have to use the on press and on release functions to maintain
> my own dictionary?  This seems silly.
>
> This is the code I expect to work:
>
> window = pyglet.window.Window(width=width, height=height)
> keyboard = key.KeyStateHandler()
> window.push_handlers(keyboard)
>
> @window.event
> def on_key_press(button, modifiers):
>    print "pressed:", keyboard[key.UP]
>
> def player_input(dt):
>     print keyboard[key.UP]
>
> pyglet.clock.schedule(lambda _: None)
> pyglet.clock.schedule_interval(player_input,.15)
>
> pyglet.app.run()
>
>
> No matter what I am holding, there is a steady stream of Falses and
> pressing a key prints a false.  If I delete the on_key_press function, I
> get a steady stream of Trues and Falses as I would expect.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "pyglet-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/pyglet-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pyglet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to