「Linux コンソール/キーボード設定」の版間の差分
細 (→命令を追加する) |
(冒頭を同期) |
||
1行目: | 1行目: | ||
[[Category:Linux コンソール]] |
[[Category:Linux コンソール]] |
||
[[Category:キーボード設定]] |
[[Category:キーボード設定]] |
||
− | [[en:Keyboard configuration |
+ | [[en:Linux console/Keyboard configuration]] |
+ | [[es:Linux console (Español)/Keyboard configuration]] |
||
− | [[es:Keyboard configuration in console]] |
||
+ | [[fr:Linux console (Français)/Keyboard configuration]] |
||
− | [[pt:KEYMAP]] |
||
+ | [[pt:Linux console (Português)/Keyboard configuration]] |
||
− | [[ru:Keyboard configuration in console]] |
||
+ | [[ru:Linux console (Русский)/Keyboard configuration]] |
||
− | [[zh-hans:Keyboard configuration in console]] |
||
+ | [[zh-hans:Linux console (简体中文)/Keyboard configuration]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Xorg でのキーボード設定}} |
{{Related|Xorg でのキーボード設定}} |
||
11行目: | 12行目: | ||
{{Related|フォント#コンソールフォント}} |
{{Related|フォント#コンソールフォント}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [[ |
+ | [[Linux コンソール]]におけるキーボードマッピング (keymaps)、コンソールフォント、コンソールマップは、{{Pkg|kbd}} パッケージ ([[systemd]] の依存パッケージ) によって提供されています。このパッケージは、テキストコンソールを管理するための低レベルなツールも多く提供しています。加えて、''systemd'' は ''localectl'' ツールも提供しています。このツールは、システムの[[ロケール]]とキーボードレイアウトの両方の設定をコンソールと Xorg の両方で制御できます。 |
== キーボード設定の表示 == |
== キーボード設定の表示 == |
2022年9月20日 (火) 06:18時点における版
Linux コンソールにおけるキーボードマッピング (keymaps)、コンソールフォント、コンソールマップは、kbd パッケージ (systemd の依存パッケージ) によって提供されています。このパッケージは、テキストコンソールを管理するための低レベルなツールも多く提供しています。加えて、systemd は localectl ツールも提供しています。このツールは、システムのロケールとキーボードレイアウトの両方の設定をコンソールと Xorg の両方で制御できます。
目次
キーボード設定の表示
localectl status
を使って、キーボード設定を表示することができます。
キーマップ
キーマップファイルは、/usr/share/kbd/keymaps/
ディレクトリツリーに格納されています。通常、一つのキーマップファイルは、一つのキーボードレイアウトに対応しています。(include
ステートメントを使用して共通部分を共有したり、キーマップファイルに複数のレイアウトと切り替え用のキーの組み合せを含めることができます)。詳細は、keymaps(5) を参照してください。
キーマップの一覧表示
複数のコンポーネントによって構成されている XKB キーボードレイアウトとは異なり、仮想コンソールのキーボードレイアウトはコンポーネントがひとつしかありません。基本的にはひとつの keymap ファイルがひとつのキーボードレイアウトに対応しています (include ステートメントを使って共有の部分を共有することで keymap ファイルには複数のレイアウトを含めることができます)。keymap ファイルは /usr/share/kbd/keymaps/
ディレクトリツリーに保存されています。次のコマンドを使うことで利用可能な全てのキーマップを表示できます:
$ localectl list-keymaps
コンソールキーマップの命名規則は厳格には定まっていませんが、一般的には 2-letter country code と variant をスラッシュ (-
) かアンダースコア (_
) で区切った名前が付けられています。
find を使ってキーマップを調べることもできます:
$ find /usr/share/kbd/keymaps/ -type f
Loadkeys
現在のセッションでのみ有効なキーマップを設定することもできます。異なるキーマップを試したり、問題を解決したりするときに有用です。
一時的な設定を行うには loadkeys ツールを使います。このツールは systemd によって /etc/vconsole.conf
に設定されたキーマップをロードするために内部的に使用されています。とても簡単に使えます:
# loadkeys keymap
詳しくは man 1 loadkeys
を参照してください。
永続的な設定
高度な設定を /etc/vconsole.conf
ですることができ、起動時に systemd によって読み込まれます。KEYMAP
変数がキーマップの指定に使用されます。変数が空だったり設定されていない場合、デフォルトの値として us
キーマップが使われます。全てのオプションは man 5 vconsole.conf
を見て下さい。例:
/etc/vconsole.conf
KEYMAP=jp106 ...
localectl を使ってコンソールのキーマップを設定することも可能です。コマンドを実行することで /etc/vconsole.conf
内の KEYMAP
変数が変更され現在のセッションのキーマップが設定されます。例:
$ localectl set-keymap --no-convert jp106
詳しくは man 1 localectl
を参照してください。
カスタムキーマップの作成
コンソールを使用する場合、ホットキーを使用して特定の文字を表示できます。 さらに、文字のシーケンスといくつかのエスケープシーケンスを表示することもできます。 したがって、コマンドを構成する文字のシーケンスを出力し、その後に改行のエスケープ文字を出力すると、そのコマンドが実行されます。
これを行う1つの方法は、キーマップファイルを編集することです。 ただし、それが属するパッケージが更新されるたびに書き換えられるため、このファイルを編集することはお勧めしません。 既存のキーマップを個人のキーマップと統合することをお勧めします。 loadkeys
ユーティリティはこれを行うことができます。
まず、キーマップファイルを作成します。 このキーマップファイルはどこにあってもかまいませんが、1つの方法は、/ usr/local
のディレクトリ階層を模倣することです。
# mkdir -p /usr/local/share/kbd/keymaps # vim /usr/local/share/kbd/keymaps/personal.map
ちなみに、このような個人用キーマップは、デフォルトのキーマップですでに扱われているキーの動作を再定義する場合にも役立ちます。loadkeys
をロードすると、それらが新しい命令と競合する場合はデフォルトキーマップの命令が置き換えら 、それ以外の場合はそのまま保持されます。 このように、そのキーマップへの変更のみをパーソナルキーマップで指定する必要があります。
命令を追加する
このパーソナルキーマップには、2種類の命令が必要です。 まず、keycode命令、これは、デフォルトのキーマップに表示される形式と一致します。 これらの命令は、キーコードをkeysymに関連付けます。 Keysymはキーボードアクションを表します。 使用可能なアクションには、文字コードまたは文字シーケンスの出力、コンソールまたはキーマップの切り替え、マシンの起動、およびその他の多くのアクションが含まれます。 現在アクティブな完全なキーマップは、次のコマンドで取得できます。
# dumpkeys -l
ほとんどのkeysymは直感的です。 たとえば、キー112でもって「e」を出力するように設定するには、命令は次のようになります。
keycode 112 = e
キー112でもってユーロ記号を出力するように設定するには、ディレクティブは次のようになります。
keycode 112 = euro
一部のkeysymは、キーボードアクションにすぐには接続されません。 特に、大文字のFと30より大きい数からなる1〜3桁の数字(F1〜F246)が前に付いたキー記号は、常にフリーです。 これは、一連の文字やその他のアクションを出力するようにホットキーに指示するのに便利です。
keycode 112 = F70
次に、F70をバインドして特定の文字列を出力できます。
string F70 = "Hello"
キー112を押すと、F70の内容が出力されます。 ターミナルに表示されたコマンドを実行するには、コマンド文字列の最後に改行エスケープ文字を追加する必要があります。 たとえば、システムを休止状態にするためには、次のキーマップを追加します。
string F70 = "sudo systemctl hibernate\n"
その他の例
- (Emacs用に)右Altキーを左Altキーと同じにするには、キーマップで次の行を使用します。 これはファイル
/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をもうひとつののコントロールキーにするには、それぞれのキーコードを再マップします。
keycode 58 = Control
- CapsLock と左コントロールを交換するには、それぞれのキーコードをリマップします。
keycode 29 = Caps_Lock keycode 58 = Control
変更を保存する
これらのパーソナルキーマップを使用するには、「loadkeys」によってロードする必要があります。
# loadkeys /usr/local/share/kbd/keymaps/personal.map
ただし、このキーマップは現在のセッションでのみアクティブになります。起動時にキーマップをロードするには、/etc/vconsole.confのKEYMAP
変数でファイルへのフルパスを指定します。 kbdが提供する公式キーマップにようにファイルをgzipで圧縮する必要はありません。
typematic delay と rate の調整
typematic delay はキーリピートを始めるのにキーを押し続ける必要がある時間 (ミリ秒) を表します。キーリピートが開始されると、typematic rate によって指定された頻度 (Hz) で文字が繰り返されます。これらの値は kbdrate コマンドを使うことで変更できます:
# kbdrate [-d delay] [-r rate]
例えば typematic delay を 200ms に typematic rate を 30Hz に設定するには、次のコマンドを実行します:
# kbdrate -d 200 -r 30
delay や rate の値を指定しないでコマンドを実行することで typematic の値をデフォルト (delay は 250ms で rate は 11Hz) に戻すことができます:
# kbdrate
Xorg で設定したい場合は Xorg でのキーボード設定#typematic delay と rate の調整を見てください。
Systemd サービス
systemd サービスを使ってキーボードレートを設定することもできます。例:
/etc/systemd/system/kbdrate.service
[Unit] Description=Keyboard repeat rate in tty. [Service] Type=oneshot RemainAfterExit=yes StandardInput=tty StandardOutput=tty ExecStart=/usr/bin/kbdrate -s -d 450 -r 60 [Install] WantedBy=multi-user.target