跳转至内容

键盘快捷键

来自 ArchWiki
(从 Keyboard shortcut 重定向而来)

本文档提供了(不常见的)默认键盘快捷键列表,并提供了用户自定义的相关信息。

提示 如果您喜欢以键盘为中心的工作流程,您可能还会欣赏 平铺式窗口管理器

标准快捷键

内核 (SysRq)

内核通过 SysRq 键实现了一些底层快捷键,可用于调试和从无响应的系统恢复。尽可能建议使用这些快捷键,而不是强制关机(按住电源按钮完全关闭系统)。

更多详情请参阅 Wikipedia:Magic SysRq key

启用

systemd 默认将 SysRq 权限位掩码 设置为 0x10,这(在其他功能之外)不允许进程信号发送或重启。要允许在您的系统上完全使用 SysRq 键,请将 kernel.sysrq = 1 添加到您的 sysctl 配置中。大于 1 的值可用于选择性地启用 SysRq 功能;有关详细信息,请参阅 Linux 内核文档。如果您想确保即使在分区挂载之前和在 initramfs 中都能启用它,请将 sysrq_always_enabled=1 添加到您的 内核参数中。

请注意,通过这些方法更改设置将使更改在重启后仍然有效。如果您想仅为当前会话尝试更改 SysRq 设置,可以运行 sysctl kernel.sysrq=1echo "1" > /proc/sys/kernel/sysrq

为避免完全启用 SysRq 功能带来的安全风险,用户可以启用部分功能,如下节所述。如果启用无限制的 SysRq 使用,它允许终止进程和强制重启,这不会增加桌面和笔记本电脑用户的风险。但它也可以用来转储 CPU 寄存器的内容,这理论上可能泄露敏感信息。除非您有意为之,否则这需要物理访问系统。

重启

一个常用的记忆方法是“**R**eboot **E**ven **I**f **S**ystem **U**tterly **B**roken”(也称为“REISUB”)。或者,可以将其视为“BUSIER”的反向拼写。

注意 请注意,“REISUB”本身只是一个助记符,而不是恢复无响应系统的通用建议按键序列。在不了解其实际功能的情况下,切勿盲目按下这些序列。
键盘快捷键 描述 启用代码 启用的其他功能
Alt+SysRq+r Unraw 将当前虚拟控制台的键盘模式从raw模式切换到 ASCII 模式(也称为 XLATE 模式)[1] 4 Alt+SysRq+k SAK
Alt+SysRq+e Terminate 向所有进程发送 SIGTERM 信号,允许它们优雅地终止。 64 Alt+SysRq+f OOM kill
Alt+SysRq+j Thaw
Alt+SysRq+i Kill 向所有进程发送 SIGKILL 信号,强制它们立即终止。
Alt+SysRq+s Sync 将数据刷新到磁盘。 16
Alt+SysRq+u Unmount 卸载并重新挂载所有文件系统为只读。 32
Alt+SysRq+b Reboot 重启 128

例如,要仅选择性地启用重启功能,请将 kernel.sysrq 设置为 128。REISUB 的全部功能可以通过将其设置为 244 来启用,尽管这也会启用附加功能,例如表中最后一列所示的功能。有关更多文档,请参阅 SysRq 键文档和内核源文件 /drivers/tty/sysrq.c

终止占用大量内存的进程

Alt+SysRq+f 可用于调用 OOM (out-of-memory) 杀手,而不会导致内核恐慌(如果无法终止任何进程)。OOM 杀手使用一套启发式方法来选择占用最多内存的相对非关键进程并终止它。这对于终止通过导致过度抖动而导致系统软锁定的进程(例如失控的浏览器脚本)非常有用,并且在许多情况下可以避免重启的需要。请注意,尽管 OOM 杀手有其良好的启发式方法,但它可能针对多种进程,并且可能有些不可预测,因此请谨慎随意调用它。

远程使用

sysrqdAUR 是一个用于远程使用 SysRq 功能的守护进程。它似乎目前未维护。 [2]

故障排除

  • 如果 SysRq 操作产生输出,它会被发送到内核环形缓冲区,systemd journal 会获取它。当没有东西阻止输出显示在 Linux 控制台上时,它也会在那里显示。控制台上没有响应并不意味着 SysRq 命令未成功处理。如果发生这种情况,请运行 journalctl -kf 来监视到达内核环形缓冲区的输出。
  • 如果您使用的是 显示管理器,并且在执行 Alt+SysRq+e 后看到登录屏幕(如果启用了自动登录,则为完整的桌面),这很可能是由于相关的 服务文件中的 Restart=always 指令引起的。如有必要,可以 编辑单元,但这不应妨碍“REISUB”序列正常工作。
  • 如果以上所有组合除了 Alt+SysRq+b 都有效,请尝试使用相反的 Alt 键。
  • 在需要使用 Fn 键区分 SysRqPrintScreen 的笔记本电脑上,可能不需要使用 Fn 键(即 Alt+PrintScreen+字母 可能会起作用)。
  • 在联想笔记本电脑(Legion 系列除外)上,SysRq 通常配置为 Fn+S。要使用它,请按住 Alt,然后按 Fn+s,**释放** Fns,同时仍然按住 Alt,然后按上面的键。
  • 您可能需要同时按下 CtrlAlt,或者 AltGr[3]。完整的快捷键将是 Ctrl+Alt+SysRq+bAltGr+SysRq+b
  • 某些键盘,如 Logitech K835,使用 Fn+Ins 来产生 SysRq

Xorg 和 Wayland

键盘快捷键 描述 备注
Ctrl+Alt+F1, F2, F3, ... 切换到第 n 个虚拟控制台 如果无效,请尝试 Ctrl+Alt+Fn+F…
Shift+Insert
鼠标中键
粘贴 PRIMARY 缓冲区中的文本 默认情况下,Qt 将 Shift+Insert 映射到 CLIPBOARD 而不是 PRIMARY 缓冲区(例如,参见 [4]),而 Ctrl+Shift+Insert 映射到 PRIMARY 缓冲区。

自定义

以下工具将键绑定到更高级别的操作。对于仅将键绑定到其他键的工具,请参阅 输入重映射实用程序

Readline

Readline 是一个常用的行编辑库;例如,它被 Bash、FTP 等许多程序使用(请参阅 readline 包下的“Required By”以获取更多示例)。它具有 Emacs 式和 vi 式编辑模式,可以通过转义序列进行自定义。默认键绑定列在 readline(3)Info 文档中。

Xorg

有关一些默认禁用的常用快捷键,请参阅 Xorg/键盘配置#常用 XKB 选项

在图形环境中,我们可能希望在按下特定组合键时执行某个命令(即,将命令绑定到一个 keysym)。有多种方法可以做到这一点。

  • 使用低级工具(如 acpid)的最具可移植性的方法。并非所有键都受支持,但可以统一配置键盘键、电源适配器连接甚至耳机插孔(断开)插入事件。在 X 会话中正确运行程序也很困难。
  • 使用 Xorg 实用程序(例如 xbindkeys)以及最终的桌面环境或窗口管理器工具的通用方法。
  • 使用第三方程序(如 Gnome 控制中心)通过 GUI 完成所有操作的更快捷的方法。

sxhkd

一个简单的 X 热键守护进程,具有强大而紧凑的配置语法。有关详细信息,请参阅 sxhkd

actkbd

来自 actkbd 主页

actkbdAUR 是一个简单的守护进程,它将操作绑定到键盘事件。它识别按键组合,并可以处理按下、重复和释放事件。目前它仅支持 linux-2.6 evdev 接口。它使用一个纯文本配置文件,其中包含所有绑定。

此处提供了一个示例配置和指南:此处

xbindkeys

xbindkeys 允许将 keysym 高级映射到操作,而与桌面环境无关。

提示 如果您发现 xbindkeys 难以使用,请尝试图形管理器 xbindkeys_config-gtk2AUR

X-selection-paste 键绑定

本文或本章节的准确性存在争议。

原因: Shift+Insert 粘贴 PRIMARY 缓冲区。(在 Talk:Keyboard shortcuts 中讨论)

本文章或章节需要扩充。

原因: 为什么有 100ms 的延迟?(在 Talk:Keyboard shortcuts 中讨论)

喜欢通过键盘而非鼠标工作的用户可能会从绑定到鼠标中键粘贴操作的键绑定中受益。这在以键盘为中心的环境中尤其有用。工作流程示例为:

  1. 在 Firefox 中,选择您想要搜索的字符串(用鼠标)。
  2. Ctrl+k 进入“搜索引擎”字段。
  3. F9 粘贴缓冲区,而不是将鼠标指针移到字段并中键单击以粘贴。
注意 Shift+Insert 具有相似但不同的功能,请参阅 #XorgShift+Insert 插入剪贴板缓冲区,而不是 x-selection-paste 缓冲区。在某些应用程序中,这两个缓冲区是镜像的。

这里建议的方法使用了以下三个软件包:

  • xsel 以访问 x-selection 缓冲区的内容。
  • Xbindkeys 将按键组合绑定到操作。
  • xvkbdAUR 通过模拟键盘输入将缓冲区字符串传递给应用程序。

此示例将 x-selection-paste 操作绑定到 F9

.xbindkeysrc
"xvkbd -no-jump-pointer -xsendevent -text "\D1`xsel`" 2>/dev/null"
    F9

"\D1" 代码在插入选择缓冲区前加上 100 毫秒的暂停(请参阅 xvkbd 主页)。

注意 根据您的 X 配置,您可能需要删除 -xsendevent 参数以调用 xvkbd。

可以使用 xbindkeys -k 来确定 F9 以外的键的代码。

参考

参见