「コンソールでの特別なキーボードキー」の版間の差分
表示
削除された内容 追加された内容
同期 |
Kusanaginoturugi (トーク | 投稿記録) リダイレクトに変更 タグ: 新規リダイレクト |
||
| 1行目: | 1行目: | ||
[[ |
#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 で圧縮する必要はありません。 |
|||