On Wed, Apr 20, 2011 at 4:21 PM, Tristam MacDonald <[email protected]> wrote:
> On Tue, Apr 19, 2011 at 11:12 PM, Eric Poulsen <[email protected]>
> wrote:
>>
>> I'm toying around with game code; basic space ship shooter.  I've
>> assigned these keys for controls:
>>
>> UP: Thrust
>> LEFT: Rotate ship counter-clockwise
>> RIGHT: Rotate ship clockwise
>> SPACE: Fire laser
>>
>> Problem is that you can't press certain key combinations (i.e. keys
>> held down simultaneously):
>>
>> (in this order)
>> Press and hold LEFT
>> Press and hold UP
>> Press and hold SPACE
>>
>> I would expect Pyglet to send three on_key_press events, one for each
>> key press.  If I change the above to be keys to be RIGHT, UP, SPACE,
>> it works as expected.
>>
>> I've attached sample code that re-creates the problem:
>>
>> -- BEGIN CODE --
>> #!/usr/bin/python
>>
>> import pyglet
>> from pyglet.window import key
>> import sys
>>
>> window = pyglet.window.Window()
>>
>> @window.event
>> def on_key_press(symbol, modifiers):
>>
>>    sys.stdout.write('Key:')
>>    if symbol == key.UP:
>>        sys.stdout.write('UP')
>>    elif symbol == key.LEFT:
>>        sys.stdout.write('LEFT')
>>    elif symbol == key.RIGHT:
>>        sys.stdout.write('RIGHT')
>>    elif symbol == key.SPACE:
>>        sys.stdout.write('SPACE')
>>    else:
>>        sys.stdout.write('?')
>>
>>    sys.stdout.write('\n')
>>
>> @window.event
>> def on_draw():
>>    window.clear()
>>
>> pyglet.app.run()
>>
>> -- END CODE --
>>
>>
>> Anyone have any ideas?
>
> Sadly, that is not a limitation of pyglet. It is a phenomenon known as
> jamming, and is a limitation of the way normal keyboards detect keypresses.
> For a brief overview, see the wikipedia
> page: http://en.wikipedia.org/wiki/Rollover_(key)#Key_jamming_and_ghosting

So, the advice is..
  Change your keyboard!

Not very user friendly. Porting original StarControl jam detector to
pyglet would be an interesting project.

--
anatoly t.

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

Reply via email to