キーボードショートカット
この記事では (あまり有名でない) デフォルトのキーボードショートカットのリストとユーザーカスタマイズの情報を提供します。
目次
標準のショートカット
カーネル (SysRq)
sysrq キーを介してカーネルに実装されるローレベルなショートカットがいくつかあります。これらのショートカットは、システムが反応しなくなったときに復旧させたりデバッグするのに用いることができます。いつでも使うことができますが、特に、電源ボタンを長押しして無理やりシステムの電源を切るよりかはショートカットを使うほうが推奨されます。
詳細については、Wikipedia:Magic SysRq key を参照してください。
有効化
systemd は sysrq パーミッションのビットマスクがをデフォルトで 0X10に設定しており、特にプロセスのシグナリングや再起動などを許可していません。システムで sysrq キーを完全に使用できるようにするには sysctl の設定に、kernel.sysrq = 1
を追加してください。1 より大きい値は、sysrq 機能を選択的に有効にするために使用できます。詳細は、Linuxカーネルのドキュメントを参照してください。パーティションがマウントされる前やinitrd内でも有効にしたい場合は、sysrq_always_enabled=1
をカーネルパラメータに追加してください。
これらの方法で設定を変更すると、再起動しても変更が持続されることに注意してください。現在のセッションの sysrq 設定を変更してみたい場合は、 sysctl kernel.sysrq=1
または echo "1" > /proc/sys/kernel/sysrq
を実行できます。
sysrq キーを完全に有効にすることには、いくつかの明らかなセキュリティ上の リスクがあります。強制的なリブートなどに加え、CPU レジスタの内容をダンプするために使用することができ、理論的には機密情報を明らかにすることができます。これを使うにはシステムに物理的にアクセスする必要があるので (あなたが 気にしない限り)、ほとんどのデスクトップユーザはおそらくそのリスクレベルを許容範囲と考えるでしょう。とはいえ、sysrq を有効にする前に、それを有効にすることの意味と、あなたのシステムが動作しているより大きな状況の力学を完全に理解していることを確認してください。
再起動
覚え方は "Reboot Even If System Utterly Broken" です ("REISUB" とも呼ばれます)。もしくは "BUSIER" の反対として覚えましょう。
キーボードショートカット | 説明 | 有効にするコード | その他の機能を有効にする |
---|---|---|---|
Alt+SysRq+r Unraw
|
キーボードの制御を X から取り戻す。 | 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
で kill することができない場合時は、カーネルパニックを起こさずに OOM (out-of-memory) killer を呼び出せます。OOM キラーは、ヒューリスティックのセットを使って、最もメモリを消費している比較的重要でないプロセスを選び、それを kill します。これは、暴走したブラウザスクリプトのような、過剰なスラッシュを引き起こしてシステムをソフトロックしているプロセスを kill するのに非常に便利で、多くの場合、再起動の必要性を軽減できます。OOM キラーは、その善意のヒューリスティックにもかかわらず、多種多様なプロセスを対象とすることができますが、やや予測不可能なことがあるので、気軽に呼び出すには注意が必要です。
トラブルシューティング
- ディスプレイマネージャ を使っていて、
Alt+SysRq+e
の後にログイン画面が表示される場合(自動ログインが有効な場合はフルデスクトップ)。と表示される場合、関連する サービスファイル のRestart=always
ディレクティブが原因であることが多いようです。必要であれば、ユニットファイルの編集 をしてください。ただし、これによって "REISUB "シーケンスが動作しなくなることはないはずです。 - もし、
Alt+SysRq+b
以外の組み合わせで動作する場合は、Alt
キーを使ってみてください。 - もし、
SysRq
とPrtScrn
を区別するためにFn
キーを使用するノートパソコンでは、実際にはFn
キーを使う必要はないかもしれません(すなわち、{{ic}Alt + PrtSc +letter' }} でも機能するかもしれません。) - Lenovo のノートパソコンでは、
SysRq
はしばしばFn+S
として設定されます。これを使うにはAlt
を押しながらFn+s
を押して、Fn
とs
を離しAlt
を押したまま上記のキーを押してください。 - また、
Alt
と同時にCtrl
を押す必要があるかもしれません。例えば、フルキーショートカットはCtrl+Alt+SysRq+b
となります。
Linux コンソール
X11 & Wayland
キーボードショートカット | 説明 | ノート |
---|---|---|
Ctrl+Alt+F1 , F2 , F3 , ...
|
n 番目の仮想端末にスイッチ | 機能しない場合 Ctrl+Fn+Alt+F… を試してみてください。
|
Shift+Insert Mouse Button 2
|
PRIMARY バッファからテキストを貼り付ける | デフォルトでは Qt は Shift+Insert で PRIMARY バッファではなく CLIPBOARD を使います [1]。そして PRIMARY バッファは Ctrl+Shift+Insert を使用します。
|
カスタマイズ
Readline
Bash、FTP などで利用されています (詳細は readline パッケージの "Required By" 項目を参照してください) Emacs 的な編集モードと vi 的な編集モードがあり、エスケープシーケンスでカスタマイズすることができます。デフォルトのキーバインディングは readline(3) と Info documentation に記載されています。
Zsh
Zsh は ZLE を使用して、ショートカットをウィジット、スクリプトおよびコマンドにリンクします。
Xorg
デフォルトでは無効になっている一般的なショートカットについては Xorg でのキーボード設定#よく使われる XKB オプション を参照してください。
グラフィカルな環境にいるとき、あるキーの組み合わせが押されたときにコマンドを実行したいことがあります(つまり、コマンドを keysym にバインドする)。これを行うには、複数の方法があります。
- acpid のような低レベルのツールを使う最も移植性の高い方法です。すべてのキーに対応しているわけではありませんが、キーボードのキー、電源アダプタの接続、ヘッドフォンジャックの(抜き)挿しイベントまで、統一された方法で設定することが可能です。また、X セッション内のプログラムを正しく実行することも困難です。
- Xorg ユーティリティ(例:xbindkeys) やデスクトップ環境、ウィンドウマネージャツールを使用するのが一般的な方法です。
- Gnome Control Center のような GUI ですべてを行うサードパーティプログラムを使用するのが手っ取り早い方法です。
sxhkd
強力でコンパクトな構成構文を備えたシンプルなXホットキーデーモン。詳細については、sxhkd を参照してください。
actkbd
- actkbdAUR はキーボードイベントにアクションを結びつけるシンプルなデーモンです。(AUR で利用可能) はキーボードイベントにアクションをバインドするシンプルなデーモンです。キーの組み合わせを認識し、プレス、リピート、リリースイベントを扱うことができます。現在のところ linux-2.6 evdev インターフェースのみをサポートしています。すべてのバインディングを含むプレーンテキストの設定ファイルを使用します。
こちら に設定ファイルのサンプルとガイドがあります
xbindkeys
xbindkeys はデスクトップ環境とは関係なくキーとアクションの高度なマッピングを可能にします。
デスクトップ環境
ウィンドウマネージャ
X-selection-paste のキーバインディング
マウスよりもキーボードを好んで使用する場合、マウスの中ボタンでペーストを行うキーバインドが役に立つかもしれません。特にキーボードを集中的に使う環境では有用です。ワークフローは以下のようになります:
- Firefox で、検索したい文字列を (マウスで) 選択してください。
Ctrl+k
を押して "Google search" フィールドにカーソルを移動。- マウスポインタを移動して中ボタンを押す代わりに
F12
でバッファを貼り付け。
ここでは公式リポジトリにある3つのパッケージを使います:
- xsel で x-selection-buffer の中身にアクセス。
- Xbindkeys でキーストロークに操作をバインド。
- xvkbdAUR でキーボードの入力をエミュレートしてバッファ文字列をアプリケーションに渡す。
以下の例では x-selection-paste の操作を F12
キーにバインドします:
.xbindkeysrc
"xvkbd -no-jump-pointer -xsendevent -text "\D1`xsel`" 2>/dev/null" F12
"\D1"
コードはセレクションバッファの挿入の前に 100 ms のポーズを追加します (xvkbd のホームページ を参照)。
F12
以外のキーのキーコードは xbindkeys -k
で確認できます。
参照:
XMonad ウィンドウマネージャ
xmonad ウィンドウマネージャには x-selection-buffer の中身を貼り付ける機能が内蔵されています。特定のキーストローク (例: Insert
キー) にバインドするには以下の設定を使用:
xmonad.hs
import XMonad.Util.Paste ... -- X-selection-paste buffer , ((0, xK_Insert), pasteSelection) ]