I believe I'm having the same problem. If I'm using the KeyboardListener for 'KeyDown' events, then I can only accept input for one key. So when I'm moving a camera about using WASD, I can't hold both W, and D (up, and right), as the camera will only go up, or right, and not both.
Looking at the code, it seems that the listener checks for a new key being pressed, and a key being held separately in the RaisePressedEvents, and RaiseRepeatEvents methods.
The first method invokes events (is that the correct terminology?) for all keys that are currently down, but weren't down last update. So let's say it does this for W, and then D. RaiseRepeatEvents then looks at the last key, does it's checks, and then invokes events. The last key may not be the all the repeated keys, which is the problem. So D was the last key in my example, but W will be ignored because this method only looks at the last key even though W is a repeated key.
What we could do is check for all keys that are down that were down last update instead of looking for the last key , or we could have a list of all keys that were pressed last update.
I have to be honest, I've never made an open source pull request before, but I might make this my first one.
EDIT: Realised the last solution I proposed wouldn't work since we're checking for different stuff in the two methods. Fixed the first solution as well