按下Alt + F4可以切换到TTY4。

自从昨天起,我的电脑上的Alt+F4按键组合出现了意外情况。当我按下这些按键时,TTY4会被打开。此外,正在运行的GUI应用程序会接收到Alt+F4消息。通过重新启动系统可以解决这个问题,但过一段时间后又会再次出现。
据我所查,还有其他人遇到了这个问题,但没有找到解决方法(12)。
我使用的是Ubuntu Gnome 16.10,内核版本为4.8.0-39-generic,GNOME Shell版本为3.20.4。

你试过从你提供的第二个链接的回答吗? - M. Becerra
你可能想看一下这个问题:http://askubuntu.com/questions/123493/screen-went-black - Dimitri Markovich
@M.Becerra 我的系统上没有安装包console-cyrillic。 - ig343
3@DimitriMarkovich 我没有按Ctrl+Alt+F4,我绝对确定是Alt+F4在执行Ctrl+Alt+F4应该做的事情。 - ig343
你的CTRL键卡住了吗?摇动一下键盘,或者把键盘倒过来清除可能的碎屑。 - Sam Gleske
绝对确定不是的。这是一个软件问题。当我重新启动电脑时,它就恢复正常了。 - ig343
在Xenial上,同样的问题(使用Gnome) - rcomblen
同样的问题,也出现在Ubuntu Gnome上。
  • Ubuntu 16.04.2 LTS 64位
  • GNOME Shell 3.18.5
  • Linux 4.4.0-64-generic
- maxlath
这个在过去的两周里停止了,但现在又开始发生了。 - ig343
你是用笔记本还是台式机? 如果是笔记本的话,加上FN键。 - Egon Stetmann.
这是一台笔记本电脑。你说的“添加fn键”是什么意思? - ig343
我在升级一些软件包(如:grub、linux-header、linux-image v4.4.0-21等)后遇到了同样的问题。所有组合键(Alt + F[1-6])都会进入相应的TTY;Alt+F7则返回图形界面会话(但已注销)。有解决方案吗? - Matt Mello
请不要忘记使用功能键。 - Egon Stetmann.
1这似乎与内核升级有关,并且在其他Linux发行版上也会出现类似情况:https://unix.stackexchange.com/questions/59949/centos-avoid-that-alt-f4-switches-to-console - elias
我只是想弄清楚我突然身处何处,因为我在按下Alt+F4的同时也误按了一下Alt键,这个问题帮助我发现这是tty界面,所以我可以进一步搜索如何在不输入登录信息的情况下返回我的屏幕,参见如何离开tty界面? - questionto42
4个回答

我最近在Ubuntu GNOME和Unity上遇到了这个问题。答案如下:
sudo kbd_mode -s

在终端中运行这个命令,然后按下Alt+F4键组合就可以恢复正常了。
来自kbd_mode man page(来自kbd projectpackage)的说明:

kbd_mode - 报告或设置键盘模式

如果没有参数,kbd_mode会打印当前的键盘模式(RAW、MEDIUMRAW或XLATE)。
如果有参数,它将根据指示设置键盘模式:

-s:扫描码模式(RAW),


6在执行上述命令之前,通过运行sudo kbd_mode命令,我发现我的键盘处于“Unicode (UTF-8) 模式”。上述命令将把你的键盘模式设置为“原始 (扫描码) 模式”,这一点可以通过man kbd_mode确认。 - Rory O'Kane
3仅供他人参考,这在18.04版本中同样适用(默认使用GNOME)。 - jhpratt
2并使用sudo kbd_mode -u切换回Unicode模式 - WitchCraft
5每次开机都要这样做真是很烦人,显然一个永久的解决方案是按照https://askubuntu.com/a/1059609/104605所述编辑/etc/console-setup/remap.inc。 - Compholio

作为root用户,编辑/etc/console-setup/remap.inc文件。 在底部添加以下行: alt keycode 62 = VoidSymbol 运行sudo dpkg-reconfigure console-setup -phigh命令。 重新启动(reboot)。
问题现在应该已经解决了。至少对我来说是有效的。

要做的事情

1. Alt + f1 

- 以上会做什么?它会打开TTY1吗?
2. open terminal and just press "j" without quote

输出是什么?它会像按下回车键一样工作吗?还是只会打印出"j"?

在你发布的链接中,@Pielco11说sudo update-grub可以解决这个问题。

还可以尝试sudo apt-get update


当这种情况发生时,按下Alt+F1会打开TTY1。我没有特别尝试在终端上按J键,但是我知道其他使用Ctrl的命令都可以正常工作。 - ig343
你能确认一下在终端中只按下“J”键会发生什么吗?用 Ctrl + Alt + T 打开终端。 - Prakash
我按照你的要求尝试了一下,结果只打印出了一个"j"。 - ig343

一些追踪和可能修复问题的想法:
- 使用Live-CD启动以检查问题是否是物理问题 - 使用另一个键盘 - 切换键盘布局或尝试重新映射Ctrl键 - 它只发生在桌面环境中吗?如果在其他TTY上也发生,可能与某些内核参数有关。 - 你尝试过第二个参考文献中最后一条评论中的提示(update-grub)了吗?

绝对不是物理问题。是的,我已经更新了GRUB。 - ig343
你试过从光盘启动吗?我现在碰巧也遇到了类似的问题,正在比较好机器和坏机器之间的设置。 如果光盘会话正常工作,你可以尝试比较以下输出:envlocalelocalectllocale charmap - Julen Larrucea
事实是,我的电脑大部分时间都正常工作。这只是偶尔发生的情况,所以很难进行比较。 - ig343
听起来像是一个棘手的问题。也许你可以编写一个脚本,输出所有相关信息并保存到一个文件中(包括上面的所有命令)。当问题再次出现时,再次运行该脚本,并使用diff或类似的工具比较两个文件。 - Julen Larrucea