I believe I have a fix that will hopefully not break anything else.
Go to the line of the error (line 348 in your version) in event.py, and change the number 2 to a -1, like this:
return [filter(None, (k[0], modifiers and modifiers_dict(k[1]) or None, k[-1])) for k in targets]
The problem seems to be that the key press event will get passed around to different functions if it can’t be handled properly by one of them, and one of the functions puts a 3 member tuple (keyName, areThereModifierKeys, timeStamp) in the _keyBuffer, while the others put 2 member tuples (keyName, timeStamp). So when the code tries to access the third member of a tuple with two items, it obviously throws an error.
This quick fix makes it so that we get the last member of the tuple (k[-1]), which should always be the timestamp, and it doesn’t matter if the tuple has 2 or 3 elements.
A bigger question (which I will hopefully be able to post to github @jon , sorry, a little busy at the moment), is whether all of these functions (_onPygletText, _onPygletKey) are supposed to be putting the three-member tuples in the _keyBuffer.
But Mario hopefully this solves your problem.