Xorg/キーボード設定
Xorg は X KeyBoard extension (XKB) を使ってキーボードレイアウトを管理しています。また、xmodmap を使って内部のキーマップテーブルに直接アクセスすることができます。一般的に、単純な作業以外での xmodmap の使用は推奨されていません。
この記事ではほとんどの環境で効果がある XKB を使った低いレベルでの設定を説明していますが、GNOME などのデスクトップ環境によって設定が上書きされることもあります。デスクトップ環境ごとの情報も読んで下さい:
キーボード設定の表示
次のコマンドを使うことで XKB の設定を表示することができます:
$ setxkbmap -print -verbose 10
Setting verbose level to 10 locale is C Applied rules from evdev: model: evdev layout: jp options: terminate:ctrl_alt_bksp Trying to build keymap using the following components: keycodes: evdev+aliases(qwerty) types: complete compat: complete+japan symbols: pc+jp+inet(evdev)+terminate(ctrl_alt_bksp) geometry: pc(pc104) xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+jp+inet(evdev)+terminate(ctrl_alt_bksp)" }; xkb_geometry { include "pc(pc104)" }; };
サードパーティのユーティリティ
現在使用しているキーボードレイアウトの情報を表示するための"非公式の"ユーティリティも存在します。
- xkb-switch-gitAUR:
$ xkb-switch
us
- xkblayout-stateAUR:
$ xkblayout-state print "%s"
de
キーボードレイアウトの設定
Xorg のキーボードレイアウトは複数の方法で設定することが可能です。以下は使用されるオプションの説明です:
XkbModel
はキーボードのモデルを選択します。あなたのキーボードにある追加キーにのみ影響を与えます。pc104
とpc105
は安全なフォールバックです。ラップトップには追加キーが複数存在することがあり、適切なモデルを設定することでそれらのキーを利用することができます。XkbLayout
はキーボードのレイアウトを選択します。レイアウトを素早く切り替えたい場合、カンマで区切ることで複数のレイアウトを指定することが可能です。XkbVariant
は特定のレイアウトのバリアントを選択します。例えば、sk
のデフォルトのバリアントはqwertz
ですが、手動でqwerty
などを指定することができます。
XkbOptions
には追加のオプションを含めます。レイアウトの切り替えや、通知 LED、コンポーズモードなどを指定するために使われます。
レイアウトの名前は基本的に 2-letter country code です。キーボードのモデル・レイアウト・バリアント・オプション、そしてその説明を見たいときは /usr/share/X11/xkb/rules/base.lst
を開いて下さい。また、以下のコマンドを使うことで一覧を表示することができます:
localectl list-x11-keymap-models
localectl list-x11-keymap-layouts
localectl list-x11-keymap-variants [layout]
localectl list-x11-keymap-options
以下のサブセクションに含まれているサンプルはどれも同じ設定です。pc104
モデルで、第一レイアウトに jp
第二レイアウトに us
を、us
レイアウトに dvorak
バリアント、そしてレイアウトの切り替えに Alt+Shift
を使うよう設定します。
setxkbmap を使う
setxkbmap ツールは実行中の X サーバーのキーボードレイアウトを設定し、セッションが終了するまで設定は持続します。また xinitrc を使うことで設定を再起動後も永続させることができます。X の設定ファイルによって指定されたシステム全体の設定を上書きしたいときに有用です。
使用方法は次の通りです:
$ setxkbmap [-model xkb_model] [-layout xkb_layout] [-variant xkb_variant] [-option xkb_options]
全てのオプションを指定する必要はありません。例えば、レイアウトだけを変えることができます:
$ setxkbmap -layout xkb_layout
コマンドラインの引数の全ての一覧は man 1 setxkbmap
を見て下さい。
例:
$ setxkbmap -model pc104 -layout jp,us -variant ,dvorak -option grp:alt_shift_toggle
X の設定ファイルを使う
X の設定ファイルの構文は Xorg#設定 で説明しています。この方法はシステム全体で適用される設定を作成して再起動後も設定が持続します。
以下サンプル:
/etc/X11/xorg.conf.d/10-keyboard.conf
Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "jp,us" Option "XkbModel" "pc104" Option "XkbVariant" ",dvorak" Option "XkbOptions" "grp:alt_shift_toggle" EndSection
localectl を使う
X の設定ファイルを手動で編集する代わりに、localectl ツールを使うことができます。このツールは設定を /etc/X11/xorg.conf.d/00-keyboard.conf
に保存します。起動時に localectl は変更を上書きするので、手動でこのファイルを編集してはいけません。
使用法は次の通りです:
$ localectl set-x11-keymap layout [model] [variant] [options]
次のコマンドは上のサンプルと全く同じ内容で /etc/X11/xorg.conf.d/00-keyboard.conf
ファイルを作成します:
$ localectl set-x11-keymap jp,us pc104 ,dvorak grp:alt_shift_toggle
よく使われる XKB オプション
キーボードレイアウトの切り替え
キーボードレイアウトの簡単な切り替えを有効にするには、まず切り替えるために複数のレイアウトを指定してください (最初のレイアウトがデフォルトになります)。次に、切り替えに使用するキー (もしくはキーの組み合わせ) を指定します。例えば、CapsLock
キーで US と Swedish レイアウトを切り替えたい場合、XkbLayout
の引数に us,se
を XkbOptions
の引数に grp:caps_toggle
を指定してください。
CapsLock
以外のキーコンビネーションを使うこともできます。/usr/share/X11/xkb/rules/base.lst
内の grp:
で始まって _toggle
で終わっているのがそうです。利用できるオプションの完全な一覧を表示するには、次のコマンドを実行してください:
$ grep "grp:.*_toggle" /usr/share/X11/xkb/rules/base.lst
Ctrl+Alt+Backspace で Xorg を終了する
デフォルトで、キーの組み合わせ Ctrl+Alt+Backspace
は無効になっています。XkbOptions
に terminate:ctrl_alt_bksp
を指定することで有効にできます。
Caps Lock と左 Control を交換する
Caps Lock と左 Control キーを交換するには、XkbOptions
に ctrl:swapcaps
を追加してください。次のコマンドを実行することで似たようなオプションとその説明を表示できます:
$ grep -E "(ctrl|caps):" /usr/share/X11/xkb/rules/base.lst
マウスキーを有効にする
現在マウスキーはデフォルトで無効にされているので keypad:pointerkeys
を XkbOptions
に加えて手動で有効にする必要があります。Shift+NumLock
ショートカットによってマウスキーの切り替えが行えます。
コンポーズキーの設定
コンポーズキーを押して他のキーを押すと、ユニコード文字が打ち込まれます。例えば、多くの設定では compose_key ' e
を押すことで é
が作られます。キーボードレイアウトとは異なる言語を入力する必要があるときに有用です (英語キーボードでフランス語・イタリア語・ドイツ語を入力する場合など)。
例えば、右の Alt
キーをコンポーズキーにしたいのなら、XkbOptions
に compose:ralt
を指定してください。
他のキーをコンポーズキーにすることもできます。/usr/share/X11/xkb/rules/base.lst
内の compose:
で始まっているのがそうです。利用できるオプションの完全な一覧を表示するには、次のコマンドを実行してください:
$ grep "compose:" /usr/share/X11/xkb/rules/base.lst
キーの組み合わせ
コンポーズキーのデフォルトのコンビネーションは /usr/share/X11/locale/used_locale/Compose
に保存されているロケールによります。used_locale
は例えば en_US.UTF-8
になります。
デフォルトのファイルを ~/.XCompose
にコピーして編集することでコンポーズキーの組み合わせを定義することが可能です。コンポーズキーは数千のユニコード文字全てで動作し、基本多言語面にない文字も含みます。
ただし、GTK はデフォルトで XIM を使わないので ~/.XCompose
に設定したキーが使えません。この問題は ~/.xprofile
に export GTK_IM_MODULE=xim
や export XMODIFIERS="@im=none"
を追加して GTK に XIM を使わせることで修正できます。
通貨記号
ほとんどのヨーロッパ言語キーボードでは 5
キーの上にユーロ記号 (€) が印字されています。ALT
+5
などでユーロを打てるようにするには、lv3:lalt_switch
や eurosign:5
オプションを使って下さい。
ルピー記号 (₹) は同じように rupeesign:4
で使うことができます。
他の設定
typematic delay と rate の調整
typematic delay はキーリピートを始めるのにキーを押し続ける必要がある時間 (ミリ秒) を表します。キーリピートが開始されると、typematic rate によって指定された頻度 (Hz) で文字が繰り返されます。これらの値は xset コマンドを使うことで変更できます:
$ xset r rate delay [rate]
例えば typematic delay を 200ms に typematic rate を 30Hz に設定するには、次のコマンドを実行します (xinitrc を使えば設定を永続化できます):
$ xset r rate 200 30
delay や rate の値を指定しないでコマンドを実行することで typematic の値をデフォルト (delay は 660ms で rate は 25Hz) に戻すことができます:
$ xset r rate