最近,我的联想 ThinkPad T470s 笔记本电脑开始出现故障:当启动到 Linux Mint 19.3(它具有双启动选项,可以替代原版 Windows 10)时,系统表现得好像左 Control 键一直被按下。如果我在 BIOS 设置中更改按键映射(ThinkPad 有一个“交换”Fn 和 Control 键功能的选项),Fn 键被检测为一直被按下。
为什么我认为这是一个程序错误而不是硬件故障?
- 启动到 Windows 10 时不会重现此行为
- 该行为在 Linux Mint 19.3 Live USB 中不会重现
- 如果键盘通过 xinput 以编程方式分离(参见此处:https://askubuntu.com/questions/160945/is-there-a-way-to-disable-a-laptops-internal-keyboard) 然后重新连接 (即
xinput float X
xinput reattach X Y
),问题将停止发生,直到下次重新启动。事实上,一旦xinput float
执行,问题就消失了。 - 当我启动 Linux 时,我从来没有注意到这个问题
lightdm
(通过启动期间内联编辑 grub 配置) evtest
当键盘上没有按下任何按钮时不会产生任何输出(另一方面,我尝试在启动之前将重物物理地“粘住”右 Control 键并在其上面放置,并且检测到扫描码evtest
的输出KEY_RIGHTCTRL
),按下左 Control 键也不会产生任何输出。
我仍然不能 100% 确定这不是硬件问题,所以我从 AliExpress 订购了替换件 - 当替换键盘到达并安装好后,我会在这里提供更新。我尝试过物理移除键盘 - 显然问题从未发生过(我使用外部键盘进行验证)。
在我开始注意到这个问题之前,我对系统所做的主要事情是virtualbox-6.1
从官方 PPA 安装软件包。虽然运行apt purge virtualbox-6.1
并没有解决问题。
显然,我可以重新安装操作系统,问题就会 99% 消失,但我不想这样做,而是想尝试了解发生了什么。
更新
到目前为止我已尝试了以下建议但问题仍然重现:
- 检查
dconf
任何奇怪的参数 - 更换显示管理器(为
sddm
),清除并重新安装lightdm
。该问题未在登录屏幕上重现,但在我登录并启动 Cinnamon 后重现。 - 更换 DE:我已切换到 XFCE,但问题仍然存在
现在,上面的两个步骤给了我一个想法 - 创建一个空白的新用户并尝试登录,我就是这么做的。猜猜怎么着?当我进入该用户的 Cinnamon 会话时,问题就消失了。如果我切换用户,问题又回来了。
因此这肯定与用户配置有关。
更新2:
感谢评论和现有答案中的建议,我确实遇到过这种情况,我可以使用测试用户来确定导致问题出现的确切差异。
显然,擦拭~/.config/pulse/
是有帮助的。我不明白为什么,但确实有帮助。
从逻辑上讲,pulseaudio 客户端是用户登录时启动的程序之一。为什么它会影响键盘 - 这是另一个问题。我会朝这个方向深入研究,但目前,这个案子或多或少已经结案了。
答案1
根据我关于将配置文件从用户的根文件夹移动到空白的新用户直到问题再次出现的评论,发帖人已将问题定位到~/.config/pulse/
。
删除此命令即可解决问题。为了确保万无一失,还应运行命令pulseaudio -k
以终止当前正在运行的 pulseaudio 实例。
似乎 pulseaudio 对您的键盘感到困惑,并决定它需要处理可能不存在的音量键,这样就搞乱了键盘界面。
删除上述内容已消除此错误设置。
答案2
情况
楼主Ctrl在安装了一些软件并升级了系统后,遇到了键盘问题(表现为一直按下)。他似乎在一段时间后才注意到这个问题(他说最近),因此不能肯定与特定程序或软件包有关。它也可能与硬件故障有关。
备份
第零步,进行备份:它可以是完整备份,您的重要数据必须始终备份,并且您的个人设置也很有用。
例如,查看timeshift
系统方面。如果在问题出现之前已经安装了这样的系统(假设这不是硬件问题),这将允许将系统恢复到操作系统正常运行的最后日期,然后逐步查找问题出在哪里。现在它允许您进行实验,并在必要时返回到当前情况。
逐步程序
首先应该确定当前问题是否与硬件或软件有关。
来自硬件角度:用一个可以正常工作的新键盘替换旧键盘,然后在另一台电脑上测试旧键盘就足够了。台式机很容易,笔记本电脑则不太方便。甚至可以使用外部 USB 键盘。如果 USB 键盘的问题仍然存在,则与问题无关内置一。
来自软件观点:系统启动并运行时出现问题,之前要经过一些步骤:BIOS、grub、内核加载、图形内核、显示管理器、桌面环境(Kde、gnome……)、用户设置和用户端程序。
BIOS交换BIOS 中的CTRL按键,Fn问题仍然存在。这排除了硬件按键卡住的原因;键盘组合体仍有可能出现故障,但可能性较小。
蛴螬:它允许您选择从哪个操作系统开始。从不同的操作系统(Windows)开始,如果没有发现问题,您可以排除任何硬件来源。
USB加载操作系统从全新操作系统安装(在 USB 笔式驱动器上)开始,您也可以排除任何特定的内核问题。
使用 grub 中的特殊选项启动,您可以进入没有启动图形引擎的 shell。您可以在那里检查问题是否CTRL仍然存在。如果没有,您可以启动
startx
并查看它是否通常X
相关。您甚至可以在su - user
启动 X 之前进行检查,以在 X 下搜索与用户相关的问题。显示管理器。OP 使用
lightdm
。有很多可用的,幸运的是,在 Linux 下可以一次安装多个。使用一个。因此,可以安装另一个显示管理器并检查问题是否仍然存在。或者,一旦在桌面管理器部分找到 ,就可以删除并重新安装lightdm
。最好purge
这样做。
删除软件包会删除所有软件包数据,但通常会留下一些小的(经过修改的)用户配置文件,以防意外删除。在这种情况下,只需对意外删除的软件包发出安装请求即可恢复其功能。
另一方面,即使对已删除的软件包调用 purge 也可以清除这些残留文件。请注意,这不会影响存储在主目录中的任何数据或配置。- OP 清除并重新安装了
lighdm
。问题仍然存在,因此与 的具体安装无关lighdm
。 - 然后他安装了另一个 DM。问题再次出现。这完全不
lighdm
相关。
- OP 清除并重新安装了
桌面环境。Linux 允许同时安装多个桌面环境 (DE),并在每次登录时从显示管理器中选择一个。我一般不建议在不需要时安装其他 DE,因为它很重(很多软件包),会减慢更新速度,既会导致用户困惑,又会导致第三方软件配置和设置出现问题。尽管如此,可以测试问题是否取决于 DE 添加新用户并从那里登录,或者清除(删除)当前用户的所有特定设置。
- OP 排除了一般的 DE 问题,切换到 XFCE(另一个 DE)并再次发现此 DE 的日志记录问题。
用户特定配置。创建新用户并登录后,可以检查它是否特定于用户配置/程序。OP 发现新用户没有问题,而问题又回到了旧用户身上。
现在,范围缩小到特定用户的配置文件和设置。它可能取决于某些设置以及自动启动的某些程序。
- 尽可能关闭登录时自动启动的程序/任务。
- 移动配置目录分支并逐个放回。
- 检查该用户登录时是否正在运行其他进程。
请注意,它应该与 DE 一起运行,并且只供您的用户使用。一般来说,查看 dmesg 和其他日志,以检查当您以常规用户身份登录时是否发生了新情况。