「Linux コンソール/キーボード設定」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→キーマップ: 序文を転載) |
細 (→オートリピートの遅延と速度の調整: リンクを修正) |
||
(4人の利用者による、間の22版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:Linux コンソール]] |
+ | [[Category:キーボード設定]] |
||
− | [[en:Keyboard configuration in console]] |
||
− | [[ |
+ | [[en:Linux console/Keyboard configuration]] |
+ | [[es:Linux console (Español)/Keyboard configuration]] |
||
− | [[pt:KEYMAP]] |
||
+ | [[fr:Linux console (Français)/Keyboard configuration]] |
||
− | [[ru:Keyboard configuration in console]] |
||
+ | [[pt:Linux console (Português)/Keyboard configuration]] |
||
− | [[zh-hans:Keyboard configuration in console]] |
||
+ | [[ru:Linux console (Русский)/Keyboard configuration]] |
||
+ | [[zh-hans:Linux console/Keyboard configuration]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
− | {{Related| |
+ | {{Related|Linux コンソール}} |
− | {{Related| |
+ | {{Related|Xorg/キーボード設定}} |
− | {{Related| |
+ | {{Related|キーボード入力}} |
+ | {{Related|Linux コンソール#フォント}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [[ |
+ | [[Linux コンソール]]におけるキーボードマッピング (keymaps)、コンソールフォント、コンソールマップは、{{Pkg|kbd}} パッケージ ([[systemd]] の依存パッケージ) によって提供されています。このパッケージは、テキストコンソールを管理するための低レベルなツールも多く提供しています。加えて、''systemd'' は ''localectl'' ツールも提供しています。このツールは、システムの[[ロケール]]とキーボードレイアウトの両方の設定をコンソールと Xorg の両方で制御できます。 |
== キーボード設定の表示 == |
== キーボード設定の表示 == |
||
18行目: | 21行目: | ||
== キーマップ == |
== キーマップ == |
||
+ | キーマップファイルは、{{ic|/usr/share/kbd/keymaps/}} ディレクトリツリーに格納されています。通常、一つのキーマップファイルは、一つのキーボードレイアウトに対応しています。({{ic|include}} 文を使用して共通部分を共有したり、キーマップファイルに複数のレイアウトと切り替え用のキーの組み合せを含めることができます)。詳細は、{{man|5|keymaps}} を参照してください。 |
||
− | The keymap files are stored in the {{ic|/usr/share/kbd/keymaps/}} directory tree. Usually one keymap file corresponds to one keyboard layout (the {{ic|include}} statement can be used to share common parts and a keymap file can contain multiple layouts with some key combination used for switching). For more details see {{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 === |
||
36行目: | 47行目: | ||
現在のセッションでのみ有効なキーマップを設定することもできます。異なるキーマップを試したり、問題を解決したりするときに有用です。 |
現在のセッションでのみ有効なキーマップを設定することもできます。異なるキーマップを試したり、問題を解決したりするときに有用です。 |
||
− | 一時的な設定を行うには ''loadkeys'' ツールを使います。このツールは |
+ | 一時的な設定を行うには ''loadkeys'' ツールを使います。このツールは、{{ic|/etc/vconsole.conf}} に設定されたキーマップをロードするために [[systemd]] によって内部的に使用されています。とても簡単に使えます: |
# loadkeys ''keymap'' |
# loadkeys ''keymap'' |
||
− | 詳しくは {{ |
+ | 詳しくは {{man|1|loadkeys}} を参照してください。 |
=== 永続的な設定 === |
=== 永続的な設定 === |
||
− | + | 永続的なキーマップは {{ic|/etc/vconsole.conf}} で設定することができ、起動時に [[systemd]] によって読み込まれます。{{ic|KEYMAP}} 変数がキーマップの指定に使用されます。この変数が空だったり設定されていない場合、デフォルトの値として {{ic|us}} キーマップが使われます。全てのオプションは {{man|5|vconsole.conf}} を見て下さい。例: |
|
− | {{hc|/etc/vconsole.conf| |
+ | {{hc|/etc/vconsole.conf|2= |
− | KEYMAP= |
+ | KEYMAP=''uk'' |
+ | }} |
||
− | ... |
||
− | </nowiki>}} |
||
− | ''localectl'' を使ってコンソールのキーマップを設定することも可能です。コマンドを実行することで {{ic|/etc/vconsole.conf}} 内の {{ic|KEYMAP}} 変数が変更され現在のセッションのキーマップが設定されます |
+ | ''localectl'' を使ってコンソールのキーマップを設定することも可能です。コマンドを実行することで {{ic|/etc/vconsole.conf}} 内の {{ic|KEYMAP}} 変数が変更され現在のセッションのキーマップが設定されます: |
− | + | # localectl set-keymap --no-convert ''keymap'' |
|
+ | {{ic|--no-convert}} オプションを使用することで、{{ic|localectl}} が自動的に [[Xorg でのキーボード設定|Xorg のキーマップ]]を最も近いものに変更してしまうのを防ぐことができます。詳細は {{man|1|localectl}} を見てください。 |
||
− | 詳しくは {{ic|man 1 localectl}} を参照してください。 |
||
+ | 必要であれば、{{ic|keymap}} [[mkinitcpio#通常のフック|mkinitcpio フック]] を使って {{ic|/etc/vconsole.conf}} のキーマップを初期ユーザ空間で読み込むことができます。 |
||
− | === Creating a custom keymap === |
||
+ | {{Tip| |
||
− | When using the console, you can use hotkeys to print a specific character. Moreover we can also print a sequence of characters and some escape sequences. Thus, if we print the sequence of characters constituting a command and afterwards an escape character for a new line, that command will be executed. |
||
+ | * カスタムのキーマップを {{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 もこれらをサポートしていません。 |
||
+ | }} |
||
+ | === カスタムキーマップの作成 === |
||
− | One method of doing this is editing the keymap file. However, since it will be rewritten anytime the package it belongs to is updated, editing this file is discouraged. It is better to integrate the existing keymap with a personal keymap. The {{ic|loadkeys}} utility can do this. |
||
+ | コンソールを使用する場合、ホットキーを使用して特定の文字を表示できます。 さらに、文字のシーケンスといくつかのエスケープシーケンスを表示することもできます。 したがって、コマンドを構成する文字のシーケンスを出力し、その後に改行のエスケープ文字を出力すると、そのコマンドが実行されます。 |
||
− | First, create a keymap file. This keymap file can be anywhere, but one method is to mimic the directory hierarchy in {{ic|/usr/local}}: |
||
+ | これを行う1つの方法は、キーマップファイルを編集することです。 ただし、それが属するパッケージが更新されるたびに書き換えられるため、このファイルを編集することはお勧めしません。 既存のキーマップを個人のキーマップと統合することをお勧めします。 {{ic|loadkeys}} ユーティリティはこれを行うことができます。 |
||
− | # mkdir -p /usr/local/share/kbd/keymaps |
||
− | # vim /usr/local/share/kbd/keymaps/personal.map |
||
+ | まず、キーマップファイルを作成します。 このキーマップファイルはどこにあってもかまいませんが、1つの方法は、{{ic|/usr/local}} のディレクトリ階層を模倣することです。{{ic|/usr/local/share/kbd/keymaps}} ディレクトリを[[作成]]し、{{ic|/usr/local/share/kbd/keymaps/personal.map}} を[[編集]]してください。 |
||
− | As a side note, it is worth noting that such a personal keymap is useful also to redefine the behaviour of keys already treated by the default keymap: when loaded with {{ic|loadkeys}}, the directives in the default keymap will be replaced when they conflict with the new directives and conserved otherwise. This way, only changes to the keymap must be specified in the personal keymap. |
||
+ | ちなみに、このような個人用キーマップは、デフォルトのキーマップですでに扱われているキーの動作を再定義する場合にも役立ちます。{{ic|loadkeys}} をロードすると、それらが新しい命令と競合する場合はデフォルトキーマップの命令が置き換えられ 、それ以外の場合はそのまま保持されます。 このように、そのキーマップへの変更のみをパーソナルキーマップで指定する必要があります。 |
||
− | {{Tip|You can also edit an existing keymap located in the {{ic|/usr/share/kbd/keymaps/}} directory tree. Keymaps have an ''.map.gz'' extension, for example {{ic|us.map.gz}} is an American keymap. Just copy the keymap to {{ic|/usr/local/share/kbd/keymaps/personal.map.gz}} and ''gunzip'' it.}} |
||
+ | {{Tip| |
||
− | ==== Adding directives ==== |
||
+ | * {{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}} 配列で手動で指定する必要があります。 |
||
+ | }} |
||
+ | ==== 命令を追加する ==== |
||
− | Two kinds of directives are required in this personal keymap. First of all, the [[Extra keyboard keys|keycode]] directives, which matches the format seen in the default keymaps. These directives associate a keycode with a keysym. Keysyms represent keyboard actions. The actions available include outputting character codes or character sequences, switching consoles or keymaps, booting the machine, and many other actions. The full currently active keymap can be obtained with |
||
+ | |||
+ | このパーソナルキーマップには、2種類の命令が必要です。 まず、[[特別なキーボードキー|keycode]] 命令、これは、デフォルトのキーマップに表示される形式と一致します。 これらの命令は、キーコードを keysym に関連付けます。 Keysym はキーボードアクションを表します。 使用可能なアクションには、文字コードまたは文字シーケンスの出力、コンソールまたはキーマップの切り替え、マシンの起動、およびその他の多くのアクションが含まれます。 現在アクティブな完全なキーマップは、次のコマンドで取得できます: |
||
# dumpkeys -l |
# dumpkeys -l |
||
+ | ほとんどの keysym は直感的です。 たとえば、キー112でもって 'e' を出力するように設定するには、命令は次のようになります: |
||
− | Most keysyms are intuitive. For example, to set key 112 to output an 'e', the directive will be: |
||
keycode 112 = e |
keycode 112 = e |
||
+ | キー112でもってユーロ記号を出力するように設定するには、ディレクティブは次のようになります: |
||
− | To set key 112 to output a euro symbol, the directive will be: |
||
keycode 112 = euro |
keycode 112 = euro |
||
+ | 一部の keysym は、キーボードアクションにすぐには接続されません。 特に、大文字のFと30より大きい数からなる1〜3桁の数字(F1〜F246)が前に付いたキー記号は、常にフリーです。 これは、一連の文字やその他のアクションを出力するようにホットキーに指示するのに便利です: |
||
− | Some keysym are not immediately connected to a keyboard actions. In particular, the keysyms prefixed by a capital F and one to three digits (F1-F246) constituting a number greater than 30 are always free. This is useful directing a hotkey to output a sequence of characters and other actions: |
||
keycode 112 = F70 |
keycode 112 = F70 |
||
+ | 次に、F70をバインドして特定の文字列を出力できます: |
||
− | Then, F70 can be bound to output a specific string: |
||
string F70 = "Hello" |
string F70 = "Hello" |
||
+ | キー112を押すと、F70の内容が出力されます。 ターミナルに表示されたコマンドを実行するには、コマンド文字列の最後に改行エスケープ文字を追加する必要があります。 たとえば、[[電源管理#サスペンドとハイバネート|システムを休止状態にする]]ためには、次のキーマップを追加します: |
||
− | When key 112 is pressed, it will output the contents of F70. In order to execute a printed command in a terminal, a newline escape character must be appended to the end of the command string. For example, to [[Power_management#Suspend_and_hibernate|enter a system into hibernation]], the following keymap is added: |
||
string F70 = "sudo systemctl hibernate\n" |
string F70 = "sudo systemctl hibernate\n" |
||
− | ==== |
+ | ==== その他の例 ==== |
− | * |
+ | * (Emacs用に)右Altキーを左Altキーと同じにするには、キーマップで次の行を使用します。 これはファイル{{ic|/usr/share/kbd/keymaps/i386/include/linux-with-two-alt-keys.inc}}をインクルードします。詳細については、チェックしてください。 |
include "linux-with-two-alt-keys" |
include "linux-with-two-alt-keys" |
||
+ | * (Vim用に)CapsLockをEscapeと交換するには、それぞれのキーコードを再マップします。 |
||
− | * To swap CapsLock with Escape (for Vim), remap the respective keycodes: |
||
keycode 1 = Caps_Lock |
keycode 1 = Caps_Lock |
||
keycode 58 = Escape |
keycode 58 = Escape |
||
+ | * CapsLockをもうひとつののコントロールキーにするには、それぞれのキーコードを再マップします。 |
||
− | * To make CapsLock another Control key, remap the respective keycode: |
||
keycode 58 = Control |
keycode 58 = Control |
||
+ | * CapsLock と左コントロールを交換するには、それぞれのキーコードをリマップします。 |
||
− | * To swap CapsLock with Left Control key, remap the respective keycodes: |
||
keycode 29 = Caps_Lock |
keycode 29 = Caps_Lock |
||
keycode 58 = Control |
keycode 58 = Control |
||
− | ==== |
+ | ==== 変更を保存する ==== |
+ | これらのパーソナルキーマップを使用するには、''loadkeys'' によってロードする必要があります。 |
||
− | In order to make use of the personal keymap, it must be loaded with ''loadkeys'': |
||
# loadkeys /usr/local/share/kbd/keymaps/personal.map |
# loadkeys /usr/local/share/kbd/keymaps/personal.map |
||
+ | ただし、このキーマップは現在のセッションでのみアクティブになります。起動時にキーマップをロードするには、[[#永続的な設定|/etc/vconsole.conf]]の {{ic|KEYMAP}} 変数でファイルへのフルパスを指定します。 {{Pkg|kbd}} が提供する公式キーマップにようにファイルを gzip で圧縮する必要はありません。 |
||
− | However this keymap is only active for the current session. In order to load the keymap at boot, specify the full path to the file in the {{ic|KEYMAP}} variable in [[#Persistent configuration|/etc/vconsole.conf]]. The file does not have to be gzipped as the official keymaps provided by {{Pkg|kbd}}. |
||
− | == |
+ | == オートリピートの遅延と速度の調整 == |
− | '' |
+ | ''オートリピート遅延'' (タイプマチック遅延とも) はキーリピートを始めるのにキーを押し続ける必要がある時間 (典型的にはミリ秒) を表します。キーリピートが開始されると、''オートリピート速度'' (タイプマチック速度とも) によって指定された頻度 (通常 Hz) で文字が繰り返されます。これらの値は ''kbdrate'' コマンドを使うことで変更できます。これらの設定はコンソールと [[Xorg/キーボード設定#オートリピートの遅延と速度の調整|Xorg]] で別々に設定されることに注意してください。 |
# kbdrate [-d ''delay''] [-r ''rate''] |
# kbdrate [-d ''delay''] [-r ''rate''] |
||
− | 例えば |
+ | 例えばオートリピート遅延を 200ms にオートリピート速度を 30Hz に設定するには、次のコマンドを実行します: |
# kbdrate -d 200 -r 30 |
# kbdrate -d 200 -r 30 |
||
− | + | 遅延や速度の値を指定しないでコマンドを実行することでこれらの値をデフォルト (遅延は 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> |
||
155行目: | 170行目: | ||
StandardInput=tty |
StandardInput=tty |
||
StandardOutput=tty |
StandardOutput=tty |
||
− | ExecStart=/usr/bin/kbdrate - |
+ | ExecStart=/usr/bin/kbdrate --silent --delay 250 --rate 30 |
[Install] |
[Install] |
||
161行目: | 176行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | + | そして、{{ic|kbdrate.service}} systemd サービスを[[起動/有効化]]してください。 |
|
+ | |||
+ | {{TranslationStatus|Linux console/Keyboard configuration|2022-07-23|783566}} |
2023年7月30日 (日) 22:39時点における最新版
Linux コンソールにおけるキーボードマッピング (keymaps)、コンソールフォント、コンソールマップは、kbd パッケージ (systemd の依存パッケージ) によって提供されています。このパッケージは、テキストコンソールを管理するための低レベルなツールも多く提供しています。加えて、systemd は localectl ツールも提供しています。このツールは、システムのロケールとキーボードレイアウトの両方の設定をコンソールと Xorg の両方で制御できます。
目次
キーボード設定の表示
localectl status
を使って、キーボード設定を表示することができます。
キーマップ
キーマップファイルは、/usr/share/kbd/keymaps/
ディレクトリツリーに格納されています。通常、一つのキーマップファイルは、一つのキーボードレイアウトに対応しています。(include
文を使用して共通部分を共有したり、キーマップファイルに複数のレイアウトと切り替え用のキーの組み合せを含めることができます)。詳細は、keymaps(5) を参照してください。
キーマップの一覧表示
コンソールキーマップの命名規則は多少恣意的ですが、通常以下がベースとなっています:
- 言語コード: 言語コードが国名コードと同じ場合 (例: ドイツ語は
de
、フランス語はfr
)。 - 国名コード: 同じ言語のバリエーションが異なる国々で使用されている場合 (例: 英国では
uk
、米国ではus
)。国名コードのリストは wikipedia:ISO 3166-1#Officially assigned code elements でも見られます。 - キーボードレイアウト: レイアウトが、特定の国や言語に関連していない場合 (例: Dvorak 配列 は
dvorak
)。
利用可能なすべてのキーマップを一覧表示するには、以下のコマンドを使用してください:
$ 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
のキーマップを初期ユーザ空間で読み込むことができます。
カスタムキーマップの作成
コンソールを使用する場合、ホットキーを使用して特定の文字を表示できます。 さらに、文字のシーケンスといくつかのエスケープシーケンスを表示することもできます。 したがって、コマンドを構成する文字のシーケンスを出力し、その後に改行のエスケープ文字を出力すると、そのコマンドが実行されます。
これを行う1つの方法は、キーマップファイルを編集することです。 ただし、それが属するパッケージが更新されるたびに書き換えられるため、このファイルを編集することはお勧めしません。 既存のキーマップを個人のキーマップと統合することをお勧めします。 loadkeys
ユーティリティはこれを行うことができます。
まず、キーマップファイルを作成します。 このキーマップファイルはどこにあってもかまいませんが、1つの方法は、/usr/local
のディレクトリ階層を模倣することです。/usr/local/share/kbd/keymaps
ディレクトリを作成し、/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 で圧縮する必要はありません。
オートリピートの遅延と速度の調整
オートリピート遅延 (タイプマチック遅延とも) はキーリピートを始めるのにキーを押し続ける必要がある時間 (典型的にはミリ秒) を表します。キーリピートが開始されると、オートリピート速度 (タイプマチック速度とも) によって指定された頻度 (通常 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 サービスを起動/有効化してください。