【发布时间】:2016-11-21 03:24:56
【问题描述】:
我正在 Swing 中构建 Java 游戏,我遇到了一个问题,即在 Mac 上按住 A 或 S 键太久后,keyPressed 事件停止注册(考虑到游戏使用 WASD 移动,这是一个大问题) .
在探索 Stack Overflow 之后,我发现按住这样的键会暂停焦点,因为它会尝试打开重音字符菜单,即使没有出现正常的重音字符列表。当我在我的 Mac 上禁用字符重音菜单时,一切正常。但是,我想知道是否有一种 Java 原生方式来解决此问题(例如 KeyListeners 的包装器),因为我不希望所有 Mac 用户都必须处理此问题。
【问题讨论】:
-
“我想知道是否有 Java 原生方法来解决此问题” 没有。
-
我是这么想的。
-
来自一个应该是评论的答案:“遇到同样的问题并找到了一个不太完美的解决方法,尽管不确定它是否适用于您的应用程序:stackoverflow.com/a/49783514/8371761”我>
-
@AndrewThompson 如果不是 java-native,那么在启动器脚本中怎么样?
defaults write -g ApplePressAndHoldEnabled -bool false会这样做,但这样做很严厉,因为它会永久影响系统上的每个应用程序。 -
是的,在 java 中有一个解决方法。请参阅github.com/brackeen/Scared/commit/…(也可参见github.com/TurboVNC/turbovnc/commit/…,这归因于上一个链接)。我在遇到同样问题的应用程序中尝试了这个,它可以工作。