如何在Windows中停用键盘缓冲区?

时间:2014-03-21 16:58:41

标签: python keyboard vpython

我正在尝试使用vPython编程。 这是一种游戏,但控件无法正常工作。

while True:
    "verarbeitet Maus/Tastatureingaben"        
    if scene.kb:                        # wenn Aktion auf der Tastatur...
        druck=scene.kb.getkey()         # ...Tastendruck speichern!
        # ----Aktionen bei bestimmten Tasten---- #
        if druck == "w":            # vor
            self.bewegen(self.axis)
        elif druck == "s":          # zurück
            self.bewegen(-self.axis)

所以有两个主要问题:

  1. 无法同时按下两个键。只有最新推出的一个正在运作。

  2. 如果按住一个键大约5秒钟,动作将花费更长的时间(我认为这是因为MS Windows在每次'击中'之后需要一小段时间。)

  3. 我希望你能帮助我!

2 个答案:

答案 0 :(得分:1)

我对vPython了解不多。按下键时scene.kb是否返回true?如果是这样,你可以这样做:

keys = []
while scene.kb:
    keys.append(scene.kb.getkey())

if "w" in keys and "s" in keys:
    // do something

答案 1 :(得分:1)

您是否尝试使用-u选项运行脚本:

python -u myscript.py

您可以找到有关此选项here

的文档

根据文件:

Force stdin, stdout and stderr to be totally unbuffered. On systems where it matters, 
also put stdin, stdout and stderr in binary mode.