在Unity中,重复的按键输入会丢失。

我有一个奇怪的问题。有时候在Unity程序中按下键盘上的任意键后,程序无法接收到按键事件,但在普通终端(ctrl+alt+f1)中键盘却可以正常工作。请问有人解决过这个问题吗?
看起来好像是如果我快速连续按下某个键,只有第一次按下会生效,但如果我每隔一秒按下同一个键,那么它就能正常工作。

從您提供的信息來看,很難說究竟發生了什麼。在應用程序無法接收鍵盤輸入之前,您是否按下了特定的按鍵?如果有,Unity可能會捕獲Win鍵,這可能造成影響。 - James Henstridge
看起来好像如果我快速按下一个键多次,只有第一次按下有效,但是如果我以一秒的时间间隔按下同一个键,它就正常工作。 - Ilay
在我的情况下,任何一个按键都有这个问题。 - Ilay
我检查了xev实用工具的输出,我看到如果我开始连续多次按下同一个键,并且时间间隔很短,那么X服务器只接收到第一次按键事件。 - Ilay
我编写了一个简单的程序,用于捕获标准输入设备(在我的情况下是/dev/input/event5)上的事件,并且在这部分中,所有的按键都会按照应有的方式通知。 - Ilay
Gnome经典版也存在同样的问题,所以我猜这是Xorg的问题... - Ilay
你可以打开“通用访问”控制面板,切换到“输入法”选项卡,并告诉我是否有任何选项被打开了吗? - James Henstridge
那么,发布答案以帮助那些将搜索此问题解决方案的人。 - Ilay
9个回答

听起来你已经开启了弹跳按键(Bounce Keys)辅助功能。这个功能旨在帮助那些使用键盘时会产生意外重复按键的人,但显然不是你想要或期望的。

你可能是通过一个我记不清的特殊键盘快捷键意外启用了它。可以通过以下步骤禁用它:

  1. 打开系统设置中的通用访问控制面板。
  2. 切换到输入法选项卡。
  3. 确保弹跳按键下的开关已关闭。

在Unity中,键盘按键重复似乎会随机停止工作。当我进入键盘设置时,发现“按住键时按键重复”被勾选,尽管它的行为却不是这样。然而,如果我取消勾选并重新勾选,那么重复功能就能再次正常工作。不幸的是,我每天都要这样做好几次。

我也是一样。反弹键未激活。然而,我有VMWare和一个Windows虚拟机,在虚拟机中重复按键是有效的,但在主机中却无效。 - karatedog
经过使用xev测试,它无法接收到KeyRelease事件,只能接收到KeyPress事件。 - karatedog
+1 我觉得我在远程主机上搞了一下 x11vnc,之后键盘重复功能就停止工作了。对我来说,切换“按住键时重复按键”也起作用。 - Peter V. Mørch

我觉得这可能是一个bug。我遇到了同样的问题,所有的开关都已经启用,但是随机地“重复按键”停止工作。在Ubuntu Launchpad上也有一个关于这个主题的问题。

https://answers.launchpad.net/ubuntu/+source/xserver-xorg-input-keyboard/+question/175128

扩展回复此线程:问题不在于“弹跳键”。我一直完全关闭辅助功能,并且已经能够复制张贴者的问题。实际上,gnome 中启用的键盘重复设置会随机忽略/失败。在 gnome 中关闭并重新打开键盘重复设置似乎已经为我解决了问题。但是,这只是一个临时解决方案:问题将再次发生,这让我非常沮丧。因此,我创建了这个简单的 bash 文件,并将其固定为自定义启动器。然后我想,为什么不将它作为 cron 作业每分钟运行一次呢?这为我解决了问题。
#!/bin/bash
# resets key repeat, a bug in unity
gconftool-2 --type bool --set /desktop/gnome/peripherals/keyboard/repeat false
gconftool-2 --type bool --set /desktop/gnome/peripherals/keyboard/repeat true

James Henstridge提到的修复方法将解决这个问题。
但是,如果你在提到的设置对话框中,反弹键选项是关闭的。当我把它调成“开启”,然后再切换到“关闭”,我的键盘就按预期开始工作了。我认为这可能是默认设置的一个错误。

我的情况与这个类似,但是开关"反弹键"并没有解决问题。我不得不进入"键盘设置"区域,调整滑块的位置,然后才能正常输入重复字符。 - Cluster

我遇到了相同的问题,如果按下键,则会丢失重复的按键,解决方法是打开键盘应用程序;取消选择并选中“键盘按键在...时重复”选项;它会再次开始工作一段时间。

因此,我将该键盘应用程序固定到我的栏中,并在遇到此问题时进行取消选择和选中操作。

我非常确定这是Unity的一个错误。


我也遇到了这个问题。(Ubuntu 11.10,FF 7.01,Intel GMA4700等。)
尤其在FF 7.0.1中出现键盘焦点丢失的情况,当我打开两个或多个浏览器窗口,并使用Unity Launcher来改变焦点(例如切换到电子邮件、Nautilus,然后再切回浏览器)。
(今天首次遇到。)
我刚开始尝试解决办法(例如选择其他搜索),但后来又发生了同样的问题,我只能关闭所有的浏览器实例才解决。
最好的猜测是它将当前的应用程序/焦点与错误关联起来(从而影响了键盘)。
(并不容易重复,所以还在研究这个问题。)

这听起来像是一个不同的问题,与记者遇到的问题不同(请参阅问题的评论)。与焦点无关,而是与一些按键丢失有关。也许你最好将这个问题作为一个单独的问题提出来? - James Henstridge

继续詹姆斯的清单: 4. 从右下角点击键盘设置按钮 5. 确保选中了“按住键时重复按键”选项。

我以为可能是“反弹键”(Bounce Keys),但事实并非如此。键入选项卡中的所有功能都已关闭。我认为这是一个错误。

我做了这个: 在系统设置中打开通用访问控制面板。 切换到键入选项卡。 确保“反弹键”下的切换按钮已关闭。(先关闭再重新打开)