如何在没有延迟的情况下读取 Smalltalk (Squeak) 中的键盘状态

How to read keyboard state in Smalltalk (Squeak) without delays

在我最后的作业中,他们要我编写一个由键盘控制的游戏。游戏的一部分是按住一个键。

我使用 keyDown 方法来跟踪键盘事件。正在发生的事情是,在第一个事件之后(当我读到一个按键时)大约有半秒的延迟,然后其他字符开始出现。与在您按住 "a" 的文本框中一样的延迟,在第一个字符之后有半秒的间隔。

我在哪里可以调整它?它真的破坏了游戏...

我认为这不是在 Squeak(或任何编程语言,就此而言)中读取键盘状态的问题,而是操作系统发送的键盘信号的问题。

在 Windows 中,您需要转到 Control Panel > Keyboard > Speed 选项卡,然后调整 "Repeat delay" 设置:

在Linux中,我认为你需要使用xsetkbdrate命令。我确定在 Mac 中有类似的东西。

话虽如此,我不明白为什么你需要阅读 OS 的击键。您不应该阅读 keyDown,然后假设在收到 keyUp 事件之前一直按下该键吗?我原以为您会对键盘状态而不是单个字符感兴趣 "arriving".