「キーボードショートカット」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「Tips and tricks」を「ヒントとテクニック」に置換)
(→‎再起動: リンクを修正)
 
(4人の利用者による、間の39版が非表示)
1行目: 1行目:
[[Category:キーボード]]
+
[[Category:キーボード設定]]
 
[[Category:X サーバー]]
 
[[Category:X サーバー]]
 
[[Category:アクセシビリティ]]
 
[[Category:アクセシビリティ]]
8行目: 8行目:
 
== 標準のショートカット ==
 
== 標準のショートカット ==
   
=== カーネル ===
+
=== カーネル (SysRq) ===
   
カーネルにローレベルなショートカットが複数実装されており、システムが反応しなくなったときに復旧させたりデバッグするのに用いることができます。いつでも使うことができますが、特に、電源ボタンを長押しして無理やりシステムの電源を切るよりかはショートカットを使うほうが推奨されます。
+
sysrq キーを介してカーネルに実装されるローレベルなショートカットがいくつかあます。これらのショートカットは、システムが反応しなくなったときに復旧させたりデバッグするのに用いることができます。いつでも使うことができますが、特に、電源ボタンを長押しして無理やりシステムの電源を切るよりかはショートカットを使うほうが推奨されます。
   
  +
詳細については、[[Wikipedia:Magic SysRq key]] を参照してください。
カーネルショートカットを使うには、最初に {{ic|1=sysctl kernel.sysrq=1}} または {{ic|echo "1" > /proc/sys/kernel/sysrq}} でショートカットを有効にしておく必要があります。起動時に有効化されるようにするには、{{ic|/etc/sysctl.d/99-sysctl.conf}} を編集して {{ic|1=kernel.sysrq = 1}} と設定してください。パーティションがマウントされて initrd に入る前に有効にしたい場合、カーネルブートコマンドラインオプションに {{ic|1=sysrq_always_enabled=1}} を追加してください。
 
  +
  +
==== 有効化 ====
  +
  +
[[systemd]] は sysrq パーミッションのビットマスクがを[https://github.com/systemd/systemd/blob/main/sysctl.d/50-default.conf#L14-L19 デフォルトで 0X10に設定]しており、特に[https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html プロセスのシグナリングや再起動などを許可していません]。システムで sysrq キーを完全に使用できるようにするには [[sysctl#設定|sysctl の設定]]に、{{ic|1=kernel.sysrq = 1}} を追加してください。1 より大きい値は、sysrq 機能を選択的に有効にするために使用できます。詳細は、[https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html Linuxカーネルのドキュメント]を参照してください。パーティションがマウントされる前やinitrd内でも有効にしたい場合は、{{ic|1=sysrq_always_enabled=1}} を[[カーネルパラメータ]]に追加してください。
  +
  +
これらの方法で設定を変更すると、再起動しても変更が持続されることに注意してください。現在のセッションの sysrq 設定を変更してみたい場合は、 {{ic|1=sysctl kernel.sysrq=1}} または {{ic|echo "1" > /proc/sys/kernel/sysrq}} を実行できます。
  +
  +
sysrq キーを完全に有効にすることには、いくつかの明らかなセキュリティ上の リスクがあります。強制的なリブートなどに加え、CPU レジスタの内容をダンプするために使用することができ、理論的には機密情報を明らかにすることができます。これを使うにはシステムに物理的にアクセスする必要があるので (あなたが [https://github.com/jd/sysrqd 気にしない限り])、ほとんどのデスクトップユーザはおそらくそのリスクレベルを許容範囲と考えるでしょう。とはいえ、sysrq を有効にする前に、それを有効にすることの意味と、あなたのシステムが動作しているより大きな状況の力学を完全に理解していることを確認してください。
  +
  +
==== 再起動 ====
   
 
覚え方は "'''R'''eboot '''E'''ven '''I'''f '''S'''ystem '''U'''tterly '''B'''roken" です ("REISUB" とも呼ばれます)。もしくは "BUSIER" の反対として覚えましょう。
 
覚え方は "'''R'''eboot '''E'''ven '''I'''f '''S'''ystem '''U'''tterly '''B'''roken" です ("REISUB" とも呼ばれます)。もしくは "BUSIER" の反対として覚えましょう。
  +
  +
{{Note|"REISUB" 自体は単なるニーモニックであり、応答しないシステムの制御を取り戻すためのキー押下シーケンスに関する一般的な推奨事項ではないことに注意してください。以下に示すように、実際の機能を知らずに、これらのシーケンスを毎回盲目的に押すべきではありません。}}
   
 
{| class="wikitable"
 
{| class="wikitable"
 
! キーボードショートカット
 
! キーボードショートカット
 
! 説明
 
! 説明
  +
! 有効にするコード
  +
! その他の機能を有効にする
 
|-
 
|-
| {{ic|Alt+SysRq+r}} '''Unraw'''
+
| {{ic|Alt+SysRq+r}} Unraw
 
| キーボードの制御を X から取り戻す。
 
| キーボードの制御を X から取り戻す。
  +
| style="text-align:center;" | 4
  +
| {{ic|Alt+SysRq+k}} SAK
 
|-
 
|-
| {{ic|Alt+SysRq+e}} '''Terminate'''
+
| {{ic|Alt+SysRq+e}} Terminate
 
| 全てのプロセスに SIGTERM を送り、丁寧にプロセスを終了させる。
 
| 全てのプロセスに SIGTERM を送り、丁寧にプロセスを終了させる。
  +
| rowspan=2 style="text-align:center;" | 64
  +
| rowspan=2 | {{ic|Alt+SysRq+f}} OOM kill <br /> {{ic|Alt+SysRq+j}} Thaw
 
|-
 
|-
| {{ic|Alt+SysRq+i}} '''Kill'''
+
| {{ic|Alt+SysRq+i}} Kill
 
| 全てのプロセスに SIGKILL を送り、即座にプロセスを強制終了させる。
 
| 全てのプロセスに SIGKILL を送り、即座にプロセスを強制終了させる。
 
|-
 
|-
| {{ic|Alt+SysRq+s}} '''Sync'''
+
| {{ic|Alt+SysRq+s}} Sync
 
| データをディスクに書き込む。
 
| データをディスクに書き込む。
  +
| style="text-align:center;" | 16
  +
| style="text-align:center;" | -
 
|-
 
|-
| {{ic|Alt+SysRq+u}} '''Unmount'''
+
| {{ic|Alt+SysRq+u}} Unmount
 
| 全てのファイルシステムをアンマウントして読み取り専用で再マウント。
 
| 全てのファイルシステムをアンマウントして読み取り専用で再マウント。
  +
| style="text-align:center;" | 32
  +
| style="text-align:center;" | -
 
|-
 
|-
| {{ic|Alt+SysRq+b}} '''Reboot'''
+
| {{ic|Alt+SysRq+b}} Reboot
 
| 再起動
 
| 再起動
  +
| style="text-align:center;" | 128
  +
| style="text-align:center;" | -
 
|-
 
|-
 
|}
 
|}
   
  +
たとえば、再起動機能のみを選択的に有効にするには、{{ic|1=kernel.sysrq}} を128に設定します。REISUB 機能のセット全体を有効にするには、244に設定します。ただし、これにより、表の最後の列にリストされている追加機能も有効になります。詳細なドキュメントについては、[https://docs.kernel.org/admin-guide/sysrq.html sysrq キーのドキュメント] およびカーネルソースファイル {{ic|/drivers/tty/sysrq.c}} を参照してください。
{{Tip|
 
* [[ディスプレイマネージャ]]を使っていて {{ic|Alt+SysRq+e}} でログイン画面が表示される場合 (もしくは自動ログインが有効になっていてデスクトップが表示される場合)、[[systemd|サービスファイル]]の {{ic|1=Restart=always}} ディレクティブが原因です。必要ならば、[[systemd#ユニットファイルの編集|ユニットを編集]]してください。ただし "REISUB" シーケンスを止めることはできません。
 
* 上記の組み合わせで {{ic|Alt+SysRq+b}} だけ動作しない場合、反対側の {{ic|Alt}} キーを使ってみて下さい。
 
* {{ic|Fn}} キーを使って {{ic|SysRq}} と {{ic|PrtScrn}} を区別するノートパソコンでは、{{ic|Fn}} キーを使う必要はありません ({{ic|Alt+PrtSc+''letter''}} で動作します)。
 
* {{ic|Ctrl}} と {{ic|Alt}} を押す必要があることもあります。その場合、完全なキーショートカットは {{ic|Ctrl+Alt+SysRq+b}} となります。
 
}}
 
   
  +
==== メモリを大量に消費するプロセスの終了 ====
詳しくは Wikipedia の[[wikipedia:ja:マジックSysRqキー|マジック SysRq キー]]を見て下さい。
 
   
  +
{{ic|Alt+SysRq+f}} で kill することができない場合時は、カーネルパニックを起こさずに [https://www.kernel.org/doc/html/latest/admin-guide/mm/concepts.html?highlight=oom#oom-killer OOM (out-of-memory) killer] を呼び出せます。OOM キラーは、ヒューリスティックのセットを使って、最もメモリを消費している比較的重要でないプロセスを選び、それを kill します。これは、暴走したブラウザスクリプトのような、過剰なスラッシュを引き起こしてシステムをソフトロックしているプロセスを kill するのに非常に便利で、多くの場合、再起動の必要性を軽減できます。OOM キラーは、その善意のヒューリスティックにもかかわらず、多種多様なプロセスを対象とすることができますが、やや予測不可能なことがあるので、気軽に呼び出すには注意が必要です。
=== ターミナル ===
 
   
==== 仮想端末 ====
+
==== トラブルシューティング ====
   
  +
* [[ディスプレイマネージャ]] を使っていて、{{ic|Alt+SysRq+e}} の後にログイン画面が表示される場合(自動ログインが有効な場合はフルデスクトップ)。と表示される場合、関連する [[systemd|サービスファイル]] の {{ic|1=Restart=always}} ディレクティブが原因であることが多いようです。必要であれば、[[ユニットファイルの編集]] をしてください。ただし、これによって "REISUB "シーケンスが動作しなくなることはないはずです。
{| class="wikitable"
 
  +
* もし、{{ic|Alt+SysRq+b}} 以外の組み合わせで動作する場合は、{{ic|Alt}} キーを使ってみてください。
! キーボードショートカット
 
  +
* もし、{{ic|SysRq}} と {{ic|PrtScrn}} を区別するために {{ic|Fn}} キーを使用するノートパソコンでは、実際には {{ic|Fn}} キーを使う必要はないかもしれません(すなわち、{{ic}Alt + PrtSc +''letter' }} でも機能するかもしれません。)
! 説明
 
  +
* Lenovo のノートパソコンでは、{{ic|SysRq}} はしばしば {{ic|Fn+S}} として設定されます。これを使うには {{ic|Alt}} を押しながら {{ic|Fn+s}} を押して、{{ic|Fn}} と {{ic|s}} を離し {{ic|Alt}} を押したまま上記のキーを押してください。
|-
 
  +
* また、{{ic|Alt}} と同時に {{ic|Ctrl}} を押す必要があるかもしれません。例えば、フルキーショートカットは {{ic|Ctrl+Alt+SysRq+b}} となります。
| {{ic|Ctrl+Alt+Del}}
 
| コンピュータを再起動 (specified by the symlink {{ic|/usr/lib/systemd/system/ctrl-alt-del.target}})
 
|-
 
| {{ic|Alt+F1}}, {{ic|F2}}, {{ic|F3}}, ...
 
| ''n'' 番目の仮想端末にスイッチ
 
|-
 
| {{ic|Alt+ &larr;}}
 
| 前の仮想端末にスイッチ
 
|-
 
| {{ic|Alt+ &rarr;}}
 
| 次の仮想端末にスイッチ
 
|-
 
| {{ic|Scroll Lock}}
 
| Scroll Lock が有効になっているとき、入出力がロックされます
 
|-
 
| {{ic|Shift+PgUp}}/{{ic|PgDown}}
 
| コンソールバッファを上下にスクロール
 
|-
 
| {{ic|Ctrl+c}}
 
| 現在のタスクを終了
 
|-
 
| {{ic|Ctrl+d}}
 
| EOF を挿入
 
|-
 
| {{ic|Ctrl+z}}
 
| 現在のタスクを停止
 
|}
 
   
==== Readline ====
+
=== Linux コンソール ===
   
  +
参照 [[Linux コンソール#キーボードショートカット]]
GNU readline は行編集によく使われているライブラリです。Bash や FTP など様々なプログラムによって使われています (詳しくは {{Pkg|readline}} パッケージの "Required By" を見て下さい)。readline はカスタマイズすることができます (詳しくは man ページを参照)。
 
 
{| class="wikitable"
 
! キーボードショートカット
 
! 説明
 
|-
 
| {{ic|Ctrl+l}}
 
| 画面をクリア
 
|-
 
| colspan=2 align="center" | '''カーソルの移動'''
 
|-
 
| {{ic|Ctrl+b}}
 
| 一文字分カーソルを左に移動
 
|-
 
| {{ic|Ctrl+f}}
 
| 一文字分カーソルを右に移動
 
|-
 
| {{ic|Alt+b}}
 
| 一単語分カーソルを左に移動
 
|-
 
| {{ic|Alt+f}}
 
| 一単語分カーソルを右に移動
 
|-
 
| {{ic|Ctrl+a}}
 
| カーソルを行頭に移動
 
|-
 
| {{ic|Ctrl+e}}
 
| カーソルを行末に移動
 
|-
 
| colspan=2 align="center" | '''コピー & ペースト'''
 
|-
 
| {{ic|Ctrl+u}}
 
| 行頭からカーソル位置まで切り取り
 
|-
 
| {{ic|Ctrl+k}}
 
| カーソル位置から行末まで切り取り
 
|-
 
| {{ic|Alt+d}}
 
| カーソルの後の単語を切り取り
 
|-
 
| {{ic|Ctrl+w}}
 
| カーソルの前の単語を切り取り
 
|-
 
| {{ic|Ctrl+y}}
 
| 切り取ったテキストを貼り付け
 
|-
 
| {{ic|Alt+y}}
 
| 前に切り取ったテキストを貼り付け
 
|-
 
| {{ic|Alt+Ctrl+y}}
 
| 前のコマンドの第1引数を貼り付け
 
|-
 
| {{ic|Alt+.}}/{{ic|_}}
 
| 前のコマンドの最後の引数を貼り付け
 
|-
 
| colspan=2 align="center" | '''履歴'''
 
|-
 
| {{ic|Ctrl+p}}
 
| 前の行に移動
 
|-
 
| {{ic|Ctrl+n}}
 
| 次の行に移動
 
|-
 
| {{ic|Ctrl+s}}
 
| 検索
 
|-
 
| {{ic|Ctrl+r}}
 
| 逆検索
 
|-
 
| {{ic|Ctrl+j}}
 
| 検索を終了
 
|-
 
| {{ic|Ctrl+g}}
 
| 検索を中止 (元の行に戻る)
 
|-
 
| {{ic|Alt+r}}
 
| 変更を全て戻す
 
|-
 
| colspan=2 align="center" | '''補完'''
 
|-
 
| {{ic|Tab}}
 
| 名前の自動補完
 
|-
 
| {{ic|Alt+?}}
 
| 利用可能な補完候補を表示
 
|-
 
| {{ic|Alt+*}}
 
| 利用可能な補完候補を全て挿入
 
|-
 
|}
 
   
 
=== X11 & Wayland ===
 
=== X11 & Wayland ===
191行目: 95行目:
 
| {{ic|Shift+Insert}} <br> {{ic|Mouse Button 2}}
 
| {{ic|Shift+Insert}} <br> {{ic|Mouse Button 2}}
 
| [[クリップボード|PRIMARY バッファ]]からテキストを貼り付ける
 
| [[クリップボード|PRIMARY バッファ]]からテキストを貼り付ける
| デフォルトでは [[Qt]] は {{ic|Shift+Insert}} で PRIMARY バッファではなく CLIPBOARD を使います [http://doc.qt.io/qt-5/qlineedit.html#details]。そして PRIMARY バッファは {{ic|Ctrl+Shift+Insert}} を使用します。
+
| デフォルトでは [[Qt]] は {{ic|Shift+Insert}} で PRIMARY バッファではなく CLIPBOARD を使います [https://doc.qt.io/qt-5/qlineedit.html#details]。そして PRIMARY バッファは {{ic|Ctrl+Shift+Insert}} を使用します。
 
|-
 
|-
 
|}
 
|}
   
== ユーザーカスタマイズ ==
+
== カスタマイズ ==
   
 
=== Readline ===
 
=== Readline ===
   
  +
[[Bash]]、FTP などで利用されています (詳細は {{Pkg|readline}} パッケージの "Required By" 項目を参照してください) [[Emacs]] 的な編集モードと [[vi]] 的な編集モードがあり、エスケープシーケンスでカスタマイズすることができます。デフォルトのキーバインディングは {{man|3|readline}} と [https://tiswww.cwru.edu/php/chet/readline/rluserman.html Info documentation] に記載されています。
This example adds keys that allow (in ''vi-mode'') to search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search.
 
  +
{{hc|.inputrc|
 
  +
=== Zsh ===
set editing-mode vi
 
  +
set keymap vi-insert
 
  +
[[Zsh]] は [[Zsh#Key_bindings|ZLE]] を使用して、ショートカットをウィジット、スクリプトおよびコマンドにリンクします。
"\C-r": history-search-backward
 
  +
"\C-e": history-search-forward
 
  +
=== Xorg ===
}}
 
  +
  +
デフォルトでは無効になっている一般的なショートカットについては [[Xorg でのキーボード設定#よく使われる XKB オプション]] を参照してください。
  +
  +
グラフィカルな環境にいるとき、あるキーの組み合わせが押されたときにコマンドを実行したいことがあります(つまり、コマンドを ''keysym'' にバインドする)。これを行うには、複数の方法があります。
  +
  +
* [[acpid]] のような低レベルのツールを使う最も移植性の高い方法です。すべてのキーに対応しているわけではありませんが、キーボードのキー、電源アダプタの接続、ヘッドフォンジャックの(抜き)挿しイベントまで、統一された方法で設定することが可能です。また、X セッション内のプログラムを正しく実行することも困難です。
  +
* [[Xorg]] ユーティリティ(例:[[xbindkeys]]) やデスクトップ環境、ウィンドウマネージャツールを使用するのが一般的な方法です。
  +
* Gnome Control Center のような GUI ですべてを行うサードパーティプログラムを使用するのが手っ取り早い方法です。
  +
  +
==== sxhkd ====
  +
  +
強力でコンパクトな構成構文を備えたシンプルなXホットキーデーモン。詳細については、[[sxhkd]] を参照してください。
   
=== X11 ===
+
==== actkbd ====
   
  +
[http://users.softlab.ece.ntua.gr/~thkala/projects/actkbd/ actkbd home page] より
一般的なショートカットや、デフォルトで無効になっているショートカットは [[Xorg でのキーボード設定#よく使われる XKB オプション]]を見て下さい。
 
  +
:{{AUR|actkbd}} はキーボードイベントにアクションを結びつけるシンプルなデーモンです。([[AUR]] で利用可能) はキーボードイベントにアクションをバインドするシンプルなデーモンです。キーの組み合わせを認識し、プレス、リピート、リリースイベントを扱うことができます。現在のところ linux-2.6 evdev インターフェースのみをサポートしています。すべてのバインディングを含むプレーンテキストの設定ファイルを使用します。
   
  +
[http://users.softlab.ece.ntua.gr/~thkala/projects/actkbd/latest/README こちら] に設定ファイルのサンプルとガイドがあります
=== Firefox ===
 
   
  +
==== xbindkeys ====
[https://addons.mozilla.org/en-us/firefox/addon/customizable-shortcuts/ customizable-shortcuts] アドオンを使ってください。
 
  +
  +
[[xbindkeys]] はデスクトップ環境とは関係なくキーとアクションの高度なマッピングを可能にします。
  +
{{Tip|もし {{ic|xbindkeys}} が使いづらいと感じたら、[[AUR]] にあるグラフィカルマネージャー {{AUR|xbindkeys_config-gtk2}} を試してみてください。}}
  +
  +
=== デスクトップ環境 ===
  +
  +
* [[LXDE#Bindings]]
  +
* [[Xfce#Keyboard Shortcuts]]
  +
  +
=== ウィンドウマネージャ ===
  +
  +
* [[Fluxbox#Hotkeys]]
  +
* [[Openbox#Keybinds]]
   
 
=== X-selection-paste のキーバインディング ===
 
=== X-selection-paste のキーバインディング ===
   
マウスよりもキーボードを好んで使用する場合、''マウスの中ボタン''でペーストを行うキーバインドが役に立つかもしれません。特にキーボードを集中的に使う環境では有用です。ワークフロー以下のようになります:
+
マウスよりもキーボードを好んで使用する場合、''マウスの中ボタン''でペーストを行うキーバインドが役に立つかもしれません。特にキーボードを集中的に使う環境では有用です。ワークフロー以下のようになります:
  +
#Firefox で、検索したい文字列を (マウスで) 選択してください。
#In Firefox, select a string you want to google for (with the mouse).
 
#Hit {{ic|Ctrl+k}} to enter the "Google search" field.
+
#{{ic|Ctrl+k}} を押して "Google search" フィールドにカーソルを移動。
  +
#マウスポインタを移動して中ボタンを押す代わりに {{ic|F12}} でバッファを貼り付け。
#Hit {{ic|F12}} to paste the buffer, instead of moving the mouse pointer to the field and center-click to paste.
 
   
 
{{Note|{{ic|Shift+Insert}} で同じような機能が実行できます。[[#X11]] を見てください: {{ic|Shift+Insert}} は x-selection-paste バッファではなくクリップボードバッファを挿入します。アプリケーションによっては、両方のバッファには同じ中身が入ります。}}
 
{{Note|{{ic|Shift+Insert}} で同じような機能が実行できます。[[#X11]] を見てください: {{ic|Shift+Insert}} は x-selection-paste バッファではなくクリップボードバッファを挿入します。アプリケーションによっては、両方のバッファには同じ中身が入ります。}}
228行目: 158行目:
 
* {{Pkg|xsel}} で x-selection-buffer の中身にアクセス。
 
* {{Pkg|xsel}} で x-selection-buffer の中身にアクセス。
 
* [[Xbindkeys]] でキーストロークに操作をバインド。
 
* [[Xbindkeys]] でキーストロークに操作をバインド。
* {{Pkg|xvkbd}} でキーボードの入力をエミュレートしてバッファ文字列をアプリケーションに渡す。
+
* {{AUR|xvkbd}} でキーボードの入力をエミュレートしてバッファ文字列をアプリケーションに渡す。
   
 
以下の例では x-selection-paste の操作を {{ic|F12}} キーにバインドします:
 
以下の例では x-selection-paste の操作を {{ic|F12}} キーにバインドします:
237行目: 167行目:
 
}}
 
}}
   
The {{ic|"\D1"}} code prefixes a 100 ms pause to inserting the selection buffer (see the [http://homepage3.nifty.com/tsato/xvkbd/ xvkbd home page]).
+
{{ic|"\D1"}} コードはセレクションバッファの挿入の前に 100 ms のポーズを追加します ([http://t-sato.in.coocan.jp/xvkbd/ xvkbd のホームページ] を参照)
   
{{Note|Depending on your X configuration, you may need to drop the {{ic|-xsendevent}} argument to xvkbd.}}
+
{{Note|X の設定によっては、xvkbd {{ic|-xsendevent}} 引数を外す必要があります。}}
 
{{ic|F12}} 以外のキーのキーコードは {{ic|xbindkeys -k}} で確認できます。
 
{{ic|F12}} 以外のキーのキーコードは {{ic|xbindkeys -k}} で確認できます。
   
 
'''参照:'''
 
'''参照:'''
* [http://unix.stackexchange.com/questions/11889/pasting-x-selection-not-clipboard-contents-with-keyboard Pasting X selection (not clipboard) contents with keyboard]
+
* [https://unix.stackexchange.com/questions/11889/pasting-x-selection-not-clipboard-contents-with-keyboard Pasting X selection (not clipboard) contents with keyboard]
* [http://homepage3.nifty.com/tsato/xvkbd/ xvkbd ホームページ]
+
* [http://t-sato.in.coocan.jp/xvkbd/ xvkbd ホームページ]
   
'''XMonad ウィンドウマネージャ'''
+
==== XMonad ウィンドウマネージャ ====
   
 
[[xmonad]] ウィンドウマネージャには x-selection-buffer の中身を貼り付ける機能が内蔵されています。特定のキーストローク (例: {{ic|Insert}} キー) にバインドするには以下の設定を使用:
 
[[xmonad]] ウィンドウマネージャには x-selection-buffer の中身を貼り付ける機能が内蔵されています。特定のキーストローク (例: {{ic|Insert}} キー) にバインドするには以下の設定を使用:
256行目: 186行目:
 
}}
 
}}
   
  +
== 参照 ==
'''xdotool を使用''' - コマンドライン X11 自動化ツール
 
   
{{Pkg|xdotool}} を使用することで中ボタンボタンによって X のセレクションバッファの中身を貼り付ける操作のショートカットを作成できます。ショートカットのコマンドは以下のようになります:
 
 
xdotool getwindowfocus key --window %1 click 2
 
 
上記のコマンドは X サーバーからフォーカスのあたっているウィンドウを取得してボタン2 (中マウスボタン) のクリックイベントを発動します。
 
 
== ヒントとテクニック ==
 
 
* 主にキーボードを使って作業をする場合、[[ウィンドウマネージャ#タイル型ウィンドウマネージャ|タイル型ウィンドウマネージャ]]が気に入るかもしれません。
 
 
== 参照 ==
 
* [https://www.kernel.org/doc/Documentation/sysrq.txt The Linux Magic System Request Key - Kernel documentation]
 
 
* [http://lnag.sourceforge.net/lnag_html/node5.html Linux Newbie Administrator Guide - Shortcuts and Commands]
 
* [http://lnag.sourceforge.net/lnag_html/node5.html Linux Newbie Administrator Guide - Shortcuts and Commands]
* [http://tldp.org/HOWTO/Keyboard-and-Console-HOWTO.html The Linux keyboard and console HOWTO]
+
* [https://tldp.org/HOWTO/Keyboard-and-Console-HOWTO.html The Linux keyboard and console HOWTO]

2023年7月29日 (土) 20:18時点における最新版

この記事では (あまり有名でない) デフォルトのキーボードショートカットのリストとユーザーカスタマイズの情報を提供します。

標準のショートカット

カーネル (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" の反対として覚えましょう。

ノート: "REISUB" 自体は単なるニーモニックであり、応答しないシステムの制御を取り戻すためのキー押下シーケンスに関する一般的な推奨事項ではないことに注意してください。以下に示すように、実際の機能を知らずに、これらのシーケンスを毎回盲目的に押すべきではありません。
キーボードショートカット 説明 有効にするコード その他の機能を有効にする
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 キーを使ってみてください。
  • もし、SysRqPrtScrn を区別するために Fn キーを使用するノートパソコンでは、実際には Fn キーを使う必要はないかもしれません(すなわち、{{ic}Alt + PrtSc +letter' }} でも機能するかもしれません。)
  • Lenovo のノートパソコンでは、SysRq はしばしば Fn+S として設定されます。これを使うには Alt を押しながら Fn+s を押して、Fns を離し Alt を押したまま上記のキーを押してください。
  • また、Alt と同時に Ctrl を押す必要があるかもしれません。例えば、フルキーショートカットは Ctrl+Alt+SysRq+b となります。

Linux コンソール

参照 Linux コンソール#キーボードショートカット

X11 & Wayland

キーボードショートカット 説明 ノート
Ctrl+Alt+F1, F2, F3, ... n 番目の仮想端末にスイッチ 機能しない場合 Ctrl+Fn+Alt+F… を試してみてください。
Shift+Insert
Mouse Button 2
PRIMARY バッファからテキストを貼り付ける デフォルトでは QtShift+Insert で PRIMARY バッファではなく CLIPBOARD を使います [1]。そして PRIMARY バッファは Ctrl+Shift+Insert を使用します。

カスタマイズ

Readline

Bash、FTP などで利用されています (詳細は readline パッケージの "Required By" 項目を参照してください) Emacs 的な編集モードと vi 的な編集モードがあり、エスケープシーケンスでカスタマイズすることができます。デフォルトのキーバインディングは readline(3)Info documentation に記載されています。

Zsh

ZshZLE を使用して、ショートカットをウィジット、スクリプトおよびコマンドにリンクします。

Xorg

デフォルトでは無効になっている一般的なショートカットについては Xorg でのキーボード設定#よく使われる XKB オプション を参照してください。

グラフィカルな環境にいるとき、あるキーの組み合わせが押されたときにコマンドを実行したいことがあります(つまり、コマンドを keysym にバインドする)。これを行うには、複数の方法があります。

  • acpid のような低レベルのツールを使う最も移植性の高い方法です。すべてのキーに対応しているわけではありませんが、キーボードのキー、電源アダプタの接続、ヘッドフォンジャックの(抜き)挿しイベントまで、統一された方法で設定することが可能です。また、X セッション内のプログラムを正しく実行することも困難です。
  • Xorg ユーティリティ(例:xbindkeys) やデスクトップ環境、ウィンドウマネージャツールを使用するのが一般的な方法です。
  • Gnome Control Center のような GUI ですべてを行うサードパーティプログラムを使用するのが手っ取り早い方法です。

sxhkd

強力でコンパクトな構成構文を備えたシンプルなXホットキーデーモン。詳細については、sxhkd を参照してください。

actkbd

actkbd home page より

actkbdAUR はキーボードイベントにアクションを結びつけるシンプルなデーモンです。(AUR で利用可能) はキーボードイベントにアクションをバインドするシンプルなデーモンです。キーの組み合わせを認識し、プレス、リピート、リリースイベントを扱うことができます。現在のところ linux-2.6 evdev インターフェースのみをサポートしています。すべてのバインディングを含むプレーンテキストの設定ファイルを使用します。

こちら に設定ファイルのサンプルとガイドがあります

xbindkeys

xbindkeys はデスクトップ環境とは関係なくキーとアクションの高度なマッピングを可能にします。

ヒント: もし xbindkeys が使いづらいと感じたら、AUR にあるグラフィカルマネージャー xbindkeys_config-gtk2AUR を試してみてください。

デスクトップ環境

ウィンドウマネージャ

X-selection-paste のキーバインディング

マウスよりもキーボードを好んで使用する場合、マウスの中ボタンでペーストを行うキーバインドが役に立つかもしれません。特にキーボードを集中的に使う環境では有用です。ワークフローは以下のようになります:

  1. Firefox で、検索したい文字列を (マウスで) 選択してください。
  2. Ctrl+k を押して "Google search" フィールドにカーソルを移動。
  3. マウスポインタを移動して中ボタンを押す代わりに F12 でバッファを貼り付け。
ノート: Shift+Insert で同じような機能が実行できます。#X11 を見てください: Shift+Insert は x-selection-paste バッファではなくクリップボードバッファを挿入します。アプリケーションによっては、両方のバッファには同じ中身が入ります。

ここでは公式リポジトリにある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 のホームページ を参照)。

ノート: X の設定によっては、xvkbd の -xsendevent 引数を外す必要があります。

F12 以外のキーのキーコードは xbindkeys -k で確認できます。

参照:

XMonad ウィンドウマネージャ

xmonad ウィンドウマネージャには x-selection-buffer の中身を貼り付ける機能が内蔵されています。特定のキーストローク (例: Insert キー) にバインドするには以下の設定を使用:

xmonad.hs
import XMonad.Util.Paste
...
  -- X-selection-paste buffer
  , ((0,                     xK_Insert), pasteSelection) ]

参照