「Linux コンソール/キーボード設定」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(関連記事を追加)
 
(2人の利用者による、間の12版が非表示)
6行目: 6行目:
 
[[pt:Linux console (Português)/Keyboard configuration]]
 
[[pt:Linux console (Português)/Keyboard configuration]]
 
[[ru:Linux console (Русский)/Keyboard configuration]]
 
[[ru:Linux console (Русский)/Keyboard configuration]]
[[zh-hans:Linux console (简体中文)/Keyboard configuration]]
+
[[zh-hans:Linux console/Keyboard configuration]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Linux コンソール}}
 
{{Related|Linux コンソール}}
{{Related|Xorg でのキーボード設定}}
+
{{Related|Xorg/キーボード設定}}
{{Related|特別なキーボードキー}}
+
{{Related|キーボード入力}}
{{Related|フォント#コンソールフォント}}
+
{{Related|Linux コンソール#フォント}}
 
{{Related articles end}}
 
{{Related articles end}}
 
[[Linux コンソール]]におけるキーボードマッピング (keymaps)、コンソールフォント、コンソールマップは、{{Pkg|kbd}} パッケージ ([[systemd]] の依存パッケージ) によって提供されています。このパッケージは、テキストコンソールを管理するための低レベルなツールも多く提供しています。加えて、''systemd'' は ''localectl'' ツールも提供しています。このツールは、システムの[[ロケール]]とキーボードレイアウトの両方の設定をコンソールと Xorg の両方で制御できます。
 
[[Linux コンソール]]におけるキーボードマッピング (keymaps)、コンソールフォント、コンソールマップは、{{Pkg|kbd}} パッケージ ([[systemd]] の依存パッケージ) によって提供されています。このパッケージは、テキストコンソールを管理するための低レベルなツールも多く提供しています。加えて、''systemd'' は ''localectl'' ツールも提供しています。このツールは、システムの[[ロケール]]とキーボードレイアウトの両方の設定をコンソールと Xorg の両方で制御できます。
21行目: 21行目:
 
== キーマップ ==
 
== キーマップ ==
   
キーマップファイルは、{{ic|/usr/share/kbd/keymaps/}} ディレクトリツリーに格納されています。通常、一つのキーマップファイルは、一つのキーボードレイアウトに対応しています。({{ic|include}} ステートメントを使用して共通部分を共有したり、キーマップファイルに複数のレイアウトと切り替え用のキーの組み合せを含めることができます)。詳細は、{{man|5|keymaps}} を参照してください。
+
キーマップファイルは、{{ic|/usr/share/kbd/keymaps/}} ディレクトリツリーに格納されています。通常、一つのキーマップファイルは、一つのキーボードレイアウトに対応しています。({{ic|include}} を使用して共通部分を共有したり、キーマップファイルに複数のレイアウトと切り替え用のキーの組み合せを含めることができます)。詳細は、{{man|5|keymaps}} を参照してください。
   
 
=== キーマップの一覧表示 ===
 
=== キーマップの一覧表示 ===
   
  +
コンソールキーマップの命名規則は多少恣意的ですが、通常以下がベースとなっています:
複数のコンポーネントによって構成されている [[XKB]] キーボードレイアウトとは異なり、仮想コンソールのキーボードレイアウトはコンポーネントがひとつしかありません。基本的にはひとつの keymap ファイルがひとつのキーボードレイアウトに対応しています (''include'' ステートメントを使って共有の部分を共有することで keymap ファイルには複数のレイアウトを含めることができます)。keymap ファイルは {{ic|/usr/share/kbd/keymaps/}} ディレクトリツリーに保存されています。次のコマンドを使うことで利用可能な全てのキーマップを表示できます:
 
  +
  +
* [[wikipedia:ja:ISO_639-1|言語コード]]: 言語コードが国名コードと同じ場合 (例: ドイツ語は {{ic|de}} 、フランス語は {{ic|fr}})。
  +
* [[wikipedia:ja:国名コード|国名コード]]: 同じ言語のバリエーションが異なる国々で使用されている場合 (例: 英国では {{ic|uk}}、米国では {{ic|us}})。国名コードのリストは [[wikipedia:ISO 3166-1#Officially assigned code elements]] でも見られます。
  +
* [[wikipedia:ja:キー配列|キーボードレイアウト]]: レイアウトが、特定の国や言語に関連していない場合 (例: [[wikipedia:ja:Dvorak配列|Dvorak 配列]] は {{ic|dvorak}})。
  +
  +
利用可能なすべてのキーマップを一覧表示するには、以下のコマンドを使用してください:
   
 
$ localectl list-keymaps
 
$ localectl list-keymaps
   
  +
キーマップを検索するには、以下のコマンドを使用してください。{{ic|''search_term''}} はあなたの言語、国、レイアウトのどれかのコードに置き換えてください:
コンソールキーマップの命名規則は厳格には定まっていませんが、一般的には [[Wikipedia:ISO_3166-1_alpha-2#Officially_assigned_code_elements|2-letter country code]] と variant をスラッシュ ({{ic|-}}) かアンダースコア ({{ic|_}}) で区切った名前が付けられています。
 
  +
  +
$ localectl list-keymaps | grep -i ''search_term''
   
find を使ってキーマップを調べることもできます:
+
あるいは、find を使ってください:
   
$ find /usr/share/kbd/keymaps/ -type f
+
$ find /usr/share/kbd/keymaps/ -type f -name "*''search_term''*"
   
 
=== Loadkeys ===
 
=== Loadkeys ===
39行目: 47行目:
 
現在のセッションでのみ有効なキーマップを設定することもできます。異なるキーマップを試したり、問題を解決したりするときに有用です。
 
現在のセッションでのみ有効なキーマップを設定することもできます。異なるキーマップを試したり、問題を解決したりするときに有用です。
   
一時的な設定を行うには ''loadkeys'' ツールを使います。このツールは [[systemd|systemd]] によって {{ic|/etc/vconsole.conf}} に設定されたキーマップをロードするために内部的に使用されています。とても簡単に使えます:
+
一時的な設定を行うには ''loadkeys'' ツールを使います。このツールは{{ic|/etc/vconsole.conf}} に設定されたキーマップをロードするために [[systemd]] によって内部的に使用されています。とても簡単に使えます:
   
 
# loadkeys ''keymap''
 
# loadkeys ''keymap''
   
詳しくは {{ic|man 1 loadkeys}} を参照してください。
+
詳しくは {{man|1|loadkeys}} を参照してください。
   
 
=== 永続的な設定 ===
 
=== 永続的な設定 ===
   
高度設定を {{ic|/etc/vconsole.conf}} ですることができ、起動時に [[systemd|systemd]] によって読み込まれます。{{ic|KEYMAP}} 変数がキーマップの指定に使用されます。変数が空だったり設定されていない場合、デフォルトの値として {{ic|us}} キーマップが使われます。全てのオプションは {{ic|man 5 vconsole.conf}} を見て下さい。例:
+
永続的キーマップは {{ic|/etc/vconsole.conf}} で設定することができ、起動時に [[systemd]] によって読み込まれます。{{ic|KEYMAP}} 変数がキーマップの指定に使用されます。この変数が空だったり設定されていない場合、デフォルトの値として {{ic|us}} キーマップが使われます。全てのオプションは {{man|5|vconsole.conf}} を見て下さい。例:
   
{{hc|/etc/vconsole.conf|<nowiki>
+
{{hc|/etc/vconsole.conf|2=
KEYMAP=jp106
+
KEYMAP=''uk''
  +
}}
...
 
  +
</nowiki>}}
 
  +
''localectl'' を使ってコンソールのキーマップを設定することも可能です。コマンドを実行することで {{ic|/etc/vconsole.conf}} 内の {{ic|KEYMAP}} 変数が変更され現在のセッションのキーマップが設定されます:
  +
  +
# localectl set-keymap --no-convert ''keymap''
   
  +
{{ic|--no-convert}} オプションを使用することで、{{ic|localectl}} が自動的に [[Xorg でのキーボード設定|Xorg のキーマップ]]を最も近いものに変更してしまうのを防ぐことができます。詳細は {{man|1|localectl}} を見てください。
''localectl'' を使ってコンソールのキーマップを設定することも可能です。コマンドを実行することで {{ic|/etc/vconsole.conf}} 内の {{ic|KEYMAP}} 変数が変更され現在のセッションのキーマップが設定されます。例:
 
   
  +
必要であれば、{{ic|keymap}} [[mkinitcpio#通常のフック|mkinitcpio フック]] を使って {{ic|/etc/vconsole.conf}} のキーマップを初期ユーザ空間で読み込むことができます。
$ localectl set-keymap --no-convert ''jp106''
 
   
  +
{{Tip|
詳しくは {{ic|man 1 localectl}} を参照してください。
 
  +
* カスタムのキーマップを {{ic|/usr/share/kbd/keymaps/}} 以外の場所に保存した場合、そのファイルを絶対パスで {{ic|vconsole.conf}} で指定するか、上記の ''localectl'' コマンドを使用する際に指定する必要があります。
  +
* {{ic|/etc/vconsole.conf}} 内の {{ic|XKB''*''}} 変数は [[Xorg/キーボード設定]] のためのものです。''loadkeys'' はまだ、これらの変数の使用をサポートしていません; [https://github.com/legionus/kbd/issues/72 kbd issue 72] を参照してください。そして、Xorg もこれらをサポートしていません。
  +
}}
   
 
=== カスタムキーマップの作成 ===
 
=== カスタムキーマップの作成 ===
64行目: 78行目:
 
コンソールを使用する場合、ホットキーを使用して特定の文字を表示できます。 さらに、文字のシーケンスといくつかのエスケープシーケンスを表示することもできます。 したがって、コマンドを構成する文字のシーケンスを出力し、その後に改行のエスケープ文字を出力すると、そのコマンドが実行されます。
 
コンソールを使用する場合、ホットキーを使用して特定の文字を表示できます。 さらに、文字のシーケンスといくつかのエスケープシーケンスを表示することもできます。 したがって、コマンドを構成する文字のシーケンスを出力し、その後に改行のエスケープ文字を出力すると、そのコマンドが実行されます。
   
これを行う1つの方法は、キーマップファイルを編集することです。 ただし、それが属するパッケージが更新されるたびに書き換えられるため、このファイルを編集することはお勧めしません。 既存のキーマップを個人のキーマップと統合することをお勧めします。 {{ic|loadkeys}}ユーティリティはこれを行うことができます。
+
これを行う1つの方法は、キーマップファイルを編集することです。 ただし、それが属するパッケージが更新されるたびに書き換えられるため、このファイルを編集することはお勧めしません。 既存のキーマップを個人のキーマップと統合することをお勧めします。 {{ic|loadkeys}} ユーティリティはこれを行うことができます。
   
まず、キーマップファイルを作成します。 このキーマップファイルはどこにあってもかまいませんが、1つの方法は、{{ic|/ usr/local}}のディレクトリ階層を模倣することです。
+
まず、キーマップファイルを作成します。 このキーマップファイルはどこにあってもかまいませんが、1つの方法は、{{ic|/usr/local}} のディレクトリ階層を模倣することです。{{ic|/usr/local/share/kbd/keymaps}} ディレクトリを[[作成]]し、{{ic|/usr/local/share/kbd/keymaps/personal.map}} を[[編集]]してください
   
  +
ちなみに、このような個人用キーマップは、デフォルトのキーマップですでに扱われているキーの動作を再定義する場合にも役立ちます。{{ic|loadkeys}} をロードすると、それらが新しい命令と競合する場合はデフォルトキーマップの命令が置き換えられ 、それ以外の場合はそのまま保持されます。 このように、そのキーマップへの変更のみをパーソナルキーマップで指定する必要があります。
# mkdir -p /usr/local/share/kbd/keymaps
 
# vim /usr/local/share/kbd/keymaps/personal.map
 
   
  +
{{Tip|
ちなみに、このような個人用キーマップは、デフォルトのキーマップですでに扱われているキーの動作を再定義する場合にも役立ちます。{{ic|loadkeys}}をロードすると、それらが新しい命令と競合する場合はデフォルトキーマップの命令が置き換えら 、それ以外の場合はそのまま保持されます。 このように、そのキーマップへの変更のみをパーソナルキーマップで指定する必要があります。
 
  +
* {{ic|/usr/share/kbd/keymaps/}} ディレクトリツリーにある既存のキーマップを編集することもできます。 キーマップには ''.map.gz'' 拡張子が付いています。たとえば、{{ic|us.map.gz}} は米国のキーマップです。キーマップを {{ic|/usr/local/share/kbd/keymaps/personal.map.gz}} にコピーし、それを ''gunzip'' してください。
 
  +
* カスタムのキーマップは、{{ic|/etc/vconsole.conf}} で設定することにより永続化させることができます。このため、{{ic|keymap}} ではなく {{ic|sd-vconsole}} [[mkinitcpio#通常のフック|mkinitcpio フック]]を使う場合、カスタムのキーマップファイルを {{ic|/usr/share/kbd/keymaps/}} に置くとよいでしょう。この方法では、{{ic|/usr/share/kbd/keymaps}} の依存関係がフックによって初期 RAM ディスクイメージに自動的に追加されます。一方、カスタムのキーマップファイルを {{ic|/usr/local/}} に置いた場合、依存関係は {{ic|mkinitcpio.conf}} の {{ic|FILES}} 配列で手動で指定する必要があります。
{{ヒント|{{ic|/usr/share/kbd/keymaps/}}ディレクトリツリーにある既存のキーマップを編集することもできます。 キーマップには''.map.gz''拡張子が付いています。たとえば、{{ic|us.map.gz}}はアメリカのキーマップです。 キーマップを{{ic|/usr/local/share/kbd/keymaps/personal.map.gz}}にコピーし、「gunzip」してください。}}
 
  +
}}
   
 
==== 命令を追加する ====
 
==== 命令を追加する ====
   
このパーソナルキーマップには、2種類の命令が必要です。 まず、[[Extra Keyboard keys|keycode]]命令、これは、デフォルトのキーマップに表示される形式と一致します。 これらの命令は、キーコードをkeysymに関連付けます。 Keysymはキーボードアクションを表します。 使用可能なアクションには、文字コードまたは文字シーケンスの出力、コンソールまたはキーマップの切り替え、マシンの起動、およびその他の多くのアクションが含まれます。 現在アクティブな完全なキーマップは、次のコマンドで取得できます
+
このパーソナルキーマップには、2種類の命令が必要です。 まず、[[特別なキーボードキー|keycode]] 命令、これは、デフォルトのキーマップに表示される形式と一致します。 これらの命令は、キーコードを keysym に関連付けます。 Keysym はキーボードアクションを表します。 使用可能なアクションには、文字コードまたは文字シーケンスの出力、コンソールまたはキーマップの切り替え、マシンの起動、およびその他の多くのアクションが含まれます。 現在アクティブな完全なキーマップは、次のコマンドで取得できます:
   
 
# dumpkeys -l
 
# dumpkeys -l
   
ほとんどのkeysymは直感的です。 たとえば、キー112でもってeを出力するように設定するには、命令は次のようになります
+
ほとんどの keysym は直感的です。 たとえば、キー112でもって 'e' を出力するように設定するには、命令は次のようになります:
   
 
keycode 112 = e
 
keycode 112 = e
   
キー112でもってユーロ記号を出力するように設定するには、ディレクティブは次のようになります
+
キー112でもってユーロ記号を出力するように設定するには、ディレクティブは次のようになります:
   
 
keycode 112 = euro
 
keycode 112 = euro
   
一部のkeysymは、キーボードアクションにすぐには接続されません。 特に、大文字のFと30より大きい数からなる1〜3桁の数字(F1〜F246)が前に付いたキー記号は、常にフリーです。 これは、一連の文字やその他のアクションを出力するようにホットキーに指示するのに便利です
+
一部の keysym は、キーボードアクションにすぐには接続されません。 特に、大文字のFと30より大きい数からなる1〜3桁の数字(F1〜F246)が前に付いたキー記号は、常にフリーです。 これは、一連の文字やその他のアクションを出力するようにホットキーに指示するのに便利です:
   
 
keycode 112 = F70
 
keycode 112 = F70
   
次に、F70をバインドして特定の文字列を出力できます
+
次に、F70をバインドして特定の文字列を出力できます:
   
 
string F70 = "Hello"
 
string F70 = "Hello"
   
キー112を押すと、F70の内容が出力されます。 ターミナルに表示されたコマンドを実行するには、コマンド文字列の最後に改行エスケープ文字を追加する必要があります。 たとえば、[[Power_management#Suspend_and_hibernate|システムを休止状態にする]]ためには、次のキーマップを追加します
+
キー112を押すと、F70の内容が出力されます。 ターミナルに表示されたコマンドを実行するには、コマンド文字列の最後に改行エスケープ文字を追加する必要があります。 たとえば、[[電源管理#サスペンドとハイバネート|システムを休止状態にする]]ためには、次のキーマップを追加します:
   
 
string F70 = "sudo systemctl hibernate\n"
 
string F70 = "sudo systemctl hibernate\n"
123行目: 137行目:
 
==== 変更を保存する ====
 
==== 変更を保存する ====
   
これらのパーソナルキーマップを使用するには、loadkeysによってロードする必要があります。
+
これらのパーソナルキーマップを使用するには、''loadkeys'' によってロードする必要があります。
   
 
# loadkeys /usr/local/share/kbd/keymaps/personal.map
 
# loadkeys /usr/local/share/kbd/keymaps/personal.map
   
ただし、このキーマップは現在のセッションでのみアクティブになります。起動時にキーマップをロードするには、[[#Persistent configuration|/etc/vconsole.conf]]の{{ic|KEYMAP}}変数でファイルへのフルパスを指定します。 {{Pkg|kbd}}が提供する公式キーマップにようにファイルをgzipで圧縮する必要はありません。
+
ただし、このキーマップは現在のセッションでのみアクティブになります。起動時にキーマップをロードするには、[[#永続的な設定|/etc/vconsole.conf]]の {{ic|KEYMAP}} 変数でファイルへのフルパスを指定します。 {{Pkg|kbd}} が提供する公式キーマップにようにファイルを gzip で圧縮する必要はありません。
   
== typematic delay rate の調整 ==
+
== オートリピートの遅延速度の調整 ==
   
''typematic delay'' はキーリピートを始めるのにキーを押し続ける必要がある時間 (ミリ秒) を表します。キーリピートが開始されると、''typematic rate'' によって指定された頻度 (Hz) で文字が繰り返されます。これらの値は ''kbdrate'' コマンドを使うことで変更できます:
+
''オートリピート遅延'' (タイプマチック遅延とも) はキーリピートを始めるのにキーを押し続ける必要がある時間 (典型的にはミリ秒) を表します。キーリピートが開始されると、''オートリピート速度'' (タイプマチック速度とも) によって指定された頻度 (通常 Hz) で文字が繰り返されます。これらの値は ''kbdrate'' コマンドを使うことで変更できます。これらの設定はコンソールと [[Xorg/キーボード設定#オートリピートの遅延と速度の調整|Xorg]] で別々に設定されることに注意してください。
   
 
# kbdrate [-d ''delay''] [-r ''rate'']
 
# kbdrate [-d ''delay''] [-r ''rate'']
   
例えば typematic delay を 200ms に typematic rate を 30Hz に設定するには、次のコマンドを実行します:
+
例えばオートリピート遅延を 200ms にオートリピート速度を 30Hz に設定するには、次のコマンドを実行します:
   
 
# kbdrate -d 200 -r 30
 
# kbdrate -d 200 -r 30
   
delay rate の値を指定しないでコマンドを実行することで typematic の値をデフォルト (delay は 250ms で rate は 11Hz) に戻すことができます:
+
遅延速度の値を指定しないでコマンドを実行することでこれらの値をデフォルト (遅延は 250ms で速度は 11Hz) に戻すことができます:
   
 
# kbdrate
 
# kbdrate
 
Xorg で設定したい場合は [[Xorg でのキーボード設定#typematic delay と rate の調整]]を見てください。
 
   
 
=== Systemd サービス ===
 
=== Systemd サービス ===
   
systemd サービスを使ってボードレートを設定することもできます。例:
+
systemd サービスを使ってトリピート速度を設定することもできます。例:
   
 
{{hc|/etc/systemd/system/kbdrate.service|<nowiki>
 
{{hc|/etc/systemd/system/kbdrate.service|<nowiki>
158行目: 170行目:
 
StandardInput=tty
 
StandardInput=tty
 
StandardOutput=tty
 
StandardOutput=tty
ExecStart=/usr/bin/kbdrate -s -d 450 -r 60
+
ExecStart=/usr/bin/kbdrate --silent --delay 250 --rate 30
 
 
 
[Install]
 
[Install]
164行目: 176行目:
 
</nowiki>}}
 
</nowiki>}}
   
作成たら {{ic|kbdrate.service}} を[[起動]]・[[有効化]]してください。
+
て、{{ic|kbdrate.service}} systemd サービスを[[起動/有効化]]してください。
  +
  +
{{TranslationStatus|Linux console/Keyboard configuration|2022-07-23|783566}}

2023年7月30日 (日) 22:39時点における最新版

関連記事

Linux コンソールにおけるキーボードマッピング (keymaps)、コンソールフォント、コンソールマップは、kbd パッケージ (systemd の依存パッケージ) によって提供されています。このパッケージは、テキストコンソールを管理するための低レベルなツールも多く提供しています。加えて、systemdlocalectl ツールも提供しています。このツールは、システムのロケールとキーボードレイアウトの両方の設定をコンソールと Xorg の両方で制御できます。

キーボード設定の表示

localectl status を使って、キーボード設定を表示することができます。

キーマップ

キーマップファイルは、/usr/share/kbd/keymaps/ ディレクトリツリーに格納されています。通常、一つのキーマップファイルは、一つのキーボードレイアウトに対応しています。(include 文を使用して共通部分を共有したり、キーマップファイルに複数のレイアウトと切り替え用のキーの組み合せを含めることができます)。詳細は、keymaps(5) を参照してください。

キーマップの一覧表示

コンソールキーマップの命名規則は多少恣意的ですが、通常以下がベースとなっています:

利用可能なすべてのキーマップを一覧表示するには、以下のコマンドを使用してください:

$ localectl list-keymaps

キーマップを検索するには、以下のコマンドを使用してください。search_term はあなたの言語、国、レイアウトのどれかのコードに置き換えてください:

$ localectl list-keymaps | grep -i search_term

あるいは、find を使ってください:

$ find /usr/share/kbd/keymaps/ -type f -name "*search_term*"

Loadkeys

現在のセッションでのみ有効なキーマップを設定することもできます。異なるキーマップを試したり、問題を解決したりするときに有用です。

一時的な設定を行うには loadkeys ツールを使います。このツールは、/etc/vconsole.conf に設定されたキーマップをロードするために systemd によって内部的に使用されています。とても簡単に使えます:

# loadkeys keymap

詳しくは loadkeys(1) を参照してください。

永続的な設定

永続的なキーマップは /etc/vconsole.conf で設定することができ、起動時に systemd によって読み込まれます。KEYMAP 変数がキーマップの指定に使用されます。この変数が空だったり設定されていない場合、デフォルトの値として us キーマップが使われます。全てのオプションは vconsole.conf(5) を見て下さい。例:

/etc/vconsole.conf
KEYMAP=uk

localectl を使ってコンソールのキーマップを設定することも可能です。コマンドを実行することで /etc/vconsole.conf 内の KEYMAP 変数が変更され現在のセッションのキーマップが設定されます:

# localectl set-keymap --no-convert keymap

--no-convert オプションを使用することで、localectl が自動的に Xorg のキーマップを最も近いものに変更してしまうのを防ぐことができます。詳細は localectl(1) を見てください。

必要であれば、keymap mkinitcpio フック を使って /etc/vconsole.conf のキーマップを初期ユーザ空間で読み込むことができます。

ヒント:
  • カスタムのキーマップを /usr/share/kbd/keymaps/ 以外の場所に保存した場合、そのファイルを絶対パスで vconsole.conf で指定するか、上記の localectl コマンドを使用する際に指定する必要があります。
  • /etc/vconsole.conf 内の XKB* 変数は Xorg/キーボード設定 のためのものです。loadkeys はまだ、これらの変数の使用をサポートしていません; kbd issue 72 を参照してください。そして、Xorg もこれらをサポートしていません。

カスタムキーマップの作成

コンソールを使用する場合、ホットキーを使用して特定の文字を表示できます。 さらに、文字のシーケンスといくつかのエスケープシーケンスを表示することもできます。 したがって、コマンドを構成する文字のシーケンスを出力し、その後に改行のエスケープ文字を出力すると、そのコマンドが実行されます。

これを行う1つの方法は、キーマップファイルを編集することです。 ただし、それが属するパッケージが更新されるたびに書き換えられるため、このファイルを編集することはお勧めしません。 既存のキーマップを個人のキーマップと統合することをお勧めします。 loadkeys ユーティリティはこれを行うことができます。

まず、キーマップファイルを作成します。 このキーマップファイルはどこにあってもかまいませんが、1つの方法は、/usr/local のディレクトリ階層を模倣することです。/usr/local/share/kbd/keymaps ディレクトリを作成し、/usr/local/share/kbd/keymaps/personal.map編集してください。

ちなみに、このような個人用キーマップは、デフォルトのキーマップですでに扱われているキーの動作を再定義する場合にも役立ちます。loadkeys をロードすると、それらが新しい命令と競合する場合はデフォルトキーマップの命令が置き換えられ 、それ以外の場合はそのまま保持されます。 このように、そのキーマップへの変更のみをパーソナルキーマップで指定する必要があります。

ヒント:
  • /usr/share/kbd/keymaps/ ディレクトリツリーにある既存のキーマップを編集することもできます。 キーマップには .map.gz 拡張子が付いています。たとえば、us.map.gz は米国のキーマップです。キーマップを /usr/local/share/kbd/keymaps/personal.map.gz にコピーし、それを gunzip してください。
  • カスタムのキーマップは、/etc/vconsole.conf で設定することにより永続化させることができます。このため、keymap ではなく sd-vconsole mkinitcpio フックを使う場合、カスタムのキーマップファイルを /usr/share/kbd/keymaps/ に置くとよいでしょう。この方法では、/usr/share/kbd/keymaps の依存関係がフックによって初期 RAM ディスクイメージに自動的に追加されます。一方、カスタムのキーマップファイルを /usr/local/ に置いた場合、依存関係は mkinitcpio.confFILES 配列で手動で指定する必要があります。

命令を追加する

このパーソナルキーマップには、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.confKEYMAP 変数でファイルへのフルパスを指定します。 kbd が提供する公式キーマップにようにファイルを gzip で圧縮する必要はありません。

オートリピートの遅延と速度の調整

オートリピート遅延 (タイプマチック遅延とも) はキーリピートを始めるのにキーを押し続ける必要がある時間 (典型的にはミリ秒) を表します。キーリピートが開始されると、オートリピート速度 (タイプマチック速度とも) によって指定された頻度 (通常 Hz) で文字が繰り返されます。これらの値は kbdrate コマンドを使うことで変更できます。これらの設定はコンソールと Xorg で別々に設定されることに注意してください。

# kbdrate [-d delay] [-r rate]

例えばオートリピート遅延を 200ms にオートリピート速度を 30Hz に設定するには、次のコマンドを実行します:

# kbdrate -d 200 -r 30

遅延や速度の値を指定しないでコマンドを実行することでこれらの値をデフォルト (遅延は 250ms で速度は 11Hz) に戻すことができます:

# kbdrate

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 --silent --delay 250 --rate 30
 
[Install]
WantedBy=multi-user.target

そして、kbdrate.service systemd サービスを起動/有効化してください。

翻訳ステータス: このページは en:Linux console/Keyboard configuration の翻訳バージョンです。最後の翻訳日は 2022-07-23 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。