出自 Arch Linux 中文维基


本文介紹默認快捷鍵,以及用戶自定義快捷鍵的信息。

提示:如果你需要鍵盤為主的工作流,參見平鋪窗口管理器

默認快捷鍵

內核(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 綁定。

引用:

參見