快捷键

来自 Arch Linux 中文维基
(重定向自Keyboard shortcuts


本文包含以下内容:(可能并不为人所知的)默认快捷键方面的信息、有用的关于用户自定义快捷键的信息。

提示:设若阁下希冀键盘重心的工作流,亦可参见平铺窗口管理器

默认快捷键[编辑 | 编辑源代码]

内核(SysRq)[编辑 | 编辑源代码]

以下是系统底层的快捷键,通常被用于调试。遇到系统问题,请尽可能尝试这些快捷键,而不是按住电源开关强制关机。

详情参见 Magic SysRq key - Wikipedia

启用[编辑 | 编辑源代码]

systemd 有一个默认设置为 0x10 的 SysRq 权限掩码。这使得 SysRq 并不能允许进程做发出信号、重启等事项。为使用 SysRq 的完整功能,在 sysctl#配置 sysctl中加入 kernel.sysrq = 1。高于 1 的值用于选择性地开启 SysRq 功能,详见 Linux 内核文档。如果你想确保其在分区挂在前开启,在内核参数中加入 sysrq_always_enabled=1

注意,改变上述设置将使这些快捷键在重启后保持开启。如果你只想在当前会话开启 SysRq,你可以执行 sysctl kernel.sysrq=1echo "1" > /proc/sys/kernel/sysrq

完全启用 SysRqQ 有明显的安全风险。除了强制重启,它还可以被用来丢弃 CPU 寄存器的内容,理论上来说可以泄露敏感信息。由于使用它需要物理访问系统(除非您通过 sysrqd 对外开放),大多数桌面用户可能认为风险水平是可以接受的。尽管如此,在开启 SysRq 之前,你仍需要确保充分理解开启它的风险。

重启[编辑 | 编辑源代码]

记住这个激活命令的通用口诀是 "Reboot Even If System Utterly Broken" (或者"REISUB")。 要是记不住,想象 "BUSIER" 吧。

注意: 千万注意:"REISUB" 只是个口诀,决非是一种取得某个死机的系统后门权限的方法。你不应该在不了解这些键的真正功能的情况下盲目按。
键盘快捷键 描述
Alt+SysRq+r Unraw 从X收回对键盘的控制
Alt+SysRq+e Terminate 向所有进程发送SIGTERM信号,让它们正常终止
Alt+SysRq+i Kill 向所有进程发送SIGKILL信号,强制立即终止
Alt+SysRq+s Sync 将待写数据写入磁盘
Alt+SysRq+u Unmount 卸载所有硬盘然后重新按只读模式挂载
Alt+SysRq+b Reboot 重启

杀死内存占用过多的进程[编辑 | 编辑源代码]

Alt+SysRq+f 可用于唤醒 OOM(内存耗尽) 杀手。即使在没有可以杀死的进程下,这也不会造成内核恐慌。这个 OOM 杀手作出一系列尝试,来杀死相对不重要的进程并收回内存。当某个进程用太多内存,比如浏览器脚本运行失控,导致系统软锁的时候,这很有用,能缓解很多需要重启的情况。请注意,OOM 杀手能杀掉各种进程。尽管其本意是好的,但还是不可预测。因此,要小心使用,不要随意唤醒它。

远程使用[编辑 | 编辑源代码]

sysrqdAUR 是一个远程使用 SysRq 的守护进程。它看起来没人维护了。[1]

疑难解惑[编辑 | 编辑源代码]

  • SysQq 将其结果输出到内核缓存环,会被 systemd 日志收集。即使 Linux 控制台没有输出任何东西,结果仍然在内核缓存环中。没有控制台输出并不意味着它没执行成功。如果碰上了这种情况,运行 journalctl -kf 来监控其到达内核缓存环的输出。
  • 如果你在使用显示管理器,并且在按下 Alt+SysRq+e 后显示了登录界面(开启了自动登录的话,还可能是完全的桌面),这很有可能是由于与服务文件有关的 Restart=always 指令导致的。有必要的话,你可能需要编辑单元文件,但这应该不影响 "REISUB" 序列工作。
  • 如果以上快捷键除了 Alt+SysRq+b 都成功了,尝试使用对测的 Alt 键。
  • 对于一些用 Fn 键从 PrtScrn 键中区别出 SysRq 键的笔记本,可能并不需要同时按下 Fn 键(例如:Alt+PrtScrn+字母 可能可以工作)。
  • 对于 Legion 系列以外的联想笔记本,经常将 Fn+S 设置为 SysRq 键。为了使用这个快捷键的功能,先持续按下 Alt 键,然后按 Fn+S松开 Fns,始终保持 Alt 键,按先前提到的顺序继续按。
  • 你可能需要和 Alt 一同按下 Ctrl。如果这样,完整的快捷键示例就像 Ctrl+Alt+SysRq+b

终端[编辑 | 编辑源代码]

Linux 控制台#快捷键

Xorg 与 Wayland[编辑 | 编辑源代码]

快捷键 解释 注意
Ctrl+Alt+F1, F2, F3, ... 切换到第 n 个虚拟控制台。 不能用的话,尝试 Ctrl+Alt+Fn+F…
Shift+Insert
鼠标按键 2
主缓冲区粘贴文本 默认情况下,Qt 将 Shift+Insert 映射到剪贴版而非主缓冲区(见[2]),而 Ctrl+Shift+Insert 才映射到主缓冲区。
注意: 译注:鼠标按键 2 一般是中键。

自定义快捷键[编辑 | 编辑源代码]

Readline[编辑 | 编辑源代码]

Readline 是行编辑领域常用的库,用例见 Bash、FTP,以及很多的其他软件(详见 readline 包页面下“被依赖”节)。它提供 Emacsvi 风格的编缉模式,因而有很多可以自定义的空序列。默认快捷键在 readline 手册页(3)文档页列出。

Zsh[编辑 | 编辑源代码]

Zsh 使用 ZLE 将快捷键映射到小部件、脚本与指令。

Xorg[编辑 | 编辑源代码]

Xorg/Keyboard configuration#Frequently used XKB options 记载了一些常见的快捷键,但它们默认关闭。

在桌面环境下,我们可以通过几种办法来实现一个按键序列被按下的时候自动执行一个指令(例如:将一个指令绑定到 keysym):

  • 最可移植的办法是使用低级工具,例如 acpid。不是所有的键位都受到支持,但是它也可能通用于键盘案件、电源键甚至耳机接口的插拔事件。但,仍然要注意:它可能很难在 X 会话上正确地运行程序。
  • 最普遍的方法是使用 Xorg 工具(如 xbindkeys)和桌面环境(窗口管理器)的工具。
  • 快速的办法是用第三方程序,把所有的东西都放到 GUI,例如 Gnome 控制中心。

sxhkd[编辑 | 编辑源代码]

简单的 X 热键守护进程,提供了又小又强的配置语法。详见 sxhkd

actkbd[编辑 | 编辑源代码]

根据 actkbd 的主页

actkbdAUR 是一个简单的将事件绑定到键盘事件上的守护进程。它可以识别组合键、连击、按下与释放按键的事件。它只支持 linux-2.6 edev 介面。它使用富文本的配置档案来记录所有的绑定.

配置示例和指南可以访问这个链接

xbindkeys[编辑 | 编辑源代码]

xbindkeys 支持独立于桌面环境的键-事件映射。

提示:如果你觉得 xbindkeys 很难用,有一个图形化的管理器 xbindkeys_config-gtk2AUR 可用。

桌面环境[编辑 | 编辑源代码]

窗口管理器[编辑 | 编辑源代码]

X-selection-paste 的键位映射[编辑 | 编辑源代码]

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

原因: Shift+Insert 从主缓存粘贴(在 Talk:快捷键 中讨论)

这篇文章的某些内容需要扩充。

原因: 为何有 100 毫秒的延迟? (在 Talk:快捷键 中讨论)

更喜欢使用键盘工作的用户可能希望用快捷键来替代用中键粘贴,特别是在键盘中心的环境中使用的时候。一个工作流示例如下:

  1. 在使用火狐的时候,用鼠标选择一个你想在网上搜索的字符串。
  2. 按下 Ctrl+k 进入“搜索引擎”区。
  3. F9 来粘贴缓冲区中的内容,代替用鼠标移到搜索引擎区再按中键。
注意: Shift+Insert 的功能很相似,但是略有不同,见#XorgShift+Insert 在 QT 环境下从剪贴版缓冲区而非 x-selection-paste 缓冲区粘贴。在一些程序中,此二者互相映射。

如上示例使用以下三样包:

  • xsel 来访问 x-selection 缓冲区内容。
  • Xbindkeys 来将快捷键绑定到行为。
  • xvkbdAUR 用于通过模拟键盘输入来将缓冲区中的字符串输入到应用中。

这个示例将 x-selection 粘贴操作绑定到 F9 键:

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

"\D1" 码前置 100 毫秒延迟来插入到选定的缓冲区(详见 xvkbd 主页)。

注意: 取决于你的 X 设置,你可能需要不在 xvkbd 使用 --xsendevent 参数。

除了 F9 以外的键也可以用 xbindkeys -k 绑定。

引用:

参见[编辑 | 编辑源代码]