「コンソールでの特別なキーボードキー」の版間の差分
ナビゲーションに移動
検索に移動
(同期) |
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 で圧縮する必要はありません。 |