「コンソールでの特別なキーボードキー」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(リダイレクトに変更)
タグ: 新規リダイレクト
 
1行目: 1行目:
[[Category:キーボード]]
+
#REDIRECT [[Linux コンソール/キーボード設定#カスタムキーマップの作成]]
[[en:Extra keyboard keys in console]]
 
{{Related articles start}}
 
{{Related|特別なキーボードキー}}
 
{{Related|Xorg での特別なキーボードキー}}
 
{{Related|スキャンコードをキーコードにマップ}}
 
{{Related articles end}}
 
 
コンソールを使用するときは、ホットキーを使って特殊な文字を打ち込むことができます。さらに、一連の文字列やエスケープシーケンスを入力することも可能です。従って、コマンドと改行のエスケープ文字からなる文字列を連続して打ち込んだ場合、コマンドが実行されます。
 
 
これを行うには[[KEYMAP|キーマップ]]を編集するのが一つの方法ですが、キーマップは要注意のファイルであり、キーマップが入っているパッケージが更新されると書きなおされてしまいます。そのためファイルの編集は推奨されません。個人的なキーマップと既存のキーマップを統合するほうが良いでしょう。{{ic|loadkeys}} ユーティリティを使います。
 
 
== カスタムキーマップの作成 ==
 
 
まず、キーマップファイルを作成してください。キーマップファイルはどこに置いてもかまいませんが、{{ic|/usr/local}} のディレクトリ階層を真似るという方法があります:
 
 
# mkdir -p /usr/local/share/kbd/keymaps
 
# vim /usr/local/share/kbd/keymaps/personal.map
 
 
自分用のキーマップを使って、デフォルトのキーマップで既に定義済みのキーの挙動を再定義することも可能です。{{ic|loadkeys}} でキーマップをロードしたときに、新しいディレクティブでキーマップが衝突する場合、既存のキーマップのディレクティブが置き換わります。自分用のキーマップに定義する必要があるのは変更したいキーだけで十分です。
 
 
{{Tip|{{ic|/usr/share/kbd/keymaps/}} ディレクトリツリーに存在する既存のキーマップを編集することもできます。キーマップの拡張子は ''.map.gz'' となっており、例えばアメリカ英語のキーマップは {{ic|us.map.gz}} です。キーマップを {{ic|/usr/local/share/kbd/keymaps/personal.map.gz}} にコピーして ''gunzip'' を実行してください。}}
 
 
== ディレクティブの追加 ==
 
 
自分用キーマップには2種類のディレクティブが必要です。まず、既存のキーマップにあるフォーマットにマッチするキーコードディレクティブです。キーコードディレクティブはキーコードをキーシムと関連付けます。キーシムはキーボードのアクションを表します。文字コードや文字シーケンスの出力、コンソールやキーマップの切り替え、マシンの起動などのアクションが定義できます。完全なリストは以下のコマンドで確認できます:
 
 
# dumpkeys -l
 
 
ほとんどのキーシムはすぐにわかります。例えば、キー 112 で 'e' が出るように設定する場合、ディレクティブは以下のようになります:
 
 
keycode 112 = e
 
 
キー 112 でユーロ記号が出力されるようにするには、以下のディレクティブを使用:
 
 
keycode 112 = euro
 
 
一部のキーシムはキーボードのアクションとすぐにはつながりません。特に、大文字の F と1〜3桁の数字からなるキーシム (F1-F246) で数字が30以上のものは自由に使うことができ、一連の文字列やアクションを出力するホットキーとして有用です:
 
 
keycode 112 = F70
 
 
上記のように定義してから F70 で特定の文字列を出力するように設定できます:
 
 
string F70 = "Hello"
 
 
キー 112 が押されると、F70 の中身が出力されます。ターミナルで出力したコマンドを実行するには、コマンド文字列の末尾に改行のエスケープ文字を追加してください。例えば、ハイバネートを実行したい場合、以下のキーシムを追加します:
 
 
string F70 = "sudo /usr/sbin/hibernate\n"
 
 
=== その他の例 ===
 
 
* ([[Emacs]] 用に) 右 Alt キーを左 Alt キーと同じにしたい場合、キーマップに以下の行を書いてください。{{ic|/usr/share/kbd/keymaps/i386/include/linux-with-two-alt-keys.inc}} ファイルが読み込まれます:
 
 
include "linux-with-two-alt-keys"
 
 
* ([[Vim]] 用に) CapsLock と Escape を交換するには、以下のキーコードをリマップしてください:
 
 
keycode 1 = Caps_Lock
 
keycode 58 = Escape
 
 
* CapsLock を Control キーとして使うには、以下のキーコードをリマップします:
 
 
keycode 58 = Control
 
 
* CapsLock を左 Control キーと交換するには、それぞれのキーマップを再マッピングしてください:
 
 
keycode 29 = Caps_Lock
 
keycode 58 = Control
 
 
== 変更の保存 ==
 
 
作成したキーマップを使うには ''loadkeys'' でロードする必要があります:
 
 
$ loadkeys /usr/local/share/kbd/keymaps/personal.map
 
 
ただし上記のコマンドでロードされたキーマップは現在のセッションにおいてのみしか有効になりません。起動時にキーマップをロードするには、[[コンソールでのキーボード設定#永続的な設定|/etc/vconsole.conf]] の {{ic|KEYMAP}} 変数にファイルのフルパスを指定してください。{{Pkg|kbd}} に含まれている公式キーマップと同じようにファイルを gzip で圧縮する必要はありません。
 

2023年8月30日 (水) 21:12時点における最新版