「Xorg/キーボード設定」の版間の差分
(→キーボードレイアウトの設定: 同期) |
Kusanaginoturugi (トーク | 投稿記録) (→コンポーズキーの設定: 記事を追加) |
||
(他の1人の利用者による、間の5版が非表示) | |||
136行目: | 136行目: | ||
=== キーボードレイアウトの切り替え === |
=== キーボードレイアウトの切り替え === |
||
− | キーボードレイアウト |
+ | キーボードレイアウトを簡単に切り替えられるようにするには、まず、切り替えたい複数のレイアウトを指定してください (最初のレイアウトがデフォルトになります)。次に、切り替えに使用するキー (もしくはキーの組み合わせ) を指定します。例えば、{{ic|CapsLock}} キーで US と Swedish レイアウトを切り替えたい場合、{{ic|XkbLayout}} の引数に {{ic|us,se}} を {{ic|XkbOptions}} の引数に {{ic|grp:caps_toggle}} を指定してください。{{ic|XkbLayout}} の個数は {{ic|XkbVariant}} の個数と一致している必要があります。別のバリアント間だけで切り替えたい場合は、同じレイアウトを重複して指定してください (例: {{ic|de,de}})。 |
+ | 利用可能なレイアウト (及びバリアント) のリストは {{man|7|xkeyboard-config|LAYOUTS}} で見られます。レイアウトの切り替えに使用可能なキーの組み合わせは {{man|7|xkeyboard-config|Switching to another layout}} にリストアップされています。 |
||
− | {{ic|CapsLock}} 以外のキーコンビネーションを使うこともできます。{{ic|/usr/share/X11/xkb/rules/base.lst}} 内の {{ic|grp:}} で始まって {{ic|toggle}} で終わっているのがそうです。利用できるオプションの完全な一覧を表示するには、次のコマンドを実行してください: |
||
+ | 注意点として、{{ic|grp:alts_toggle}} オプションには[https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/issues/43 信頼性がなく]、おそらく修正されないでしょう。なので、他のキーの組み合わせが推奨されます。 |
||
− | $ grep "grp:.*toggle" /usr/share/X11/xkb/rules/base.lst |
||
− | ==== |
+ | ==== Alt Shift で言語を切り替える ==== |
+ | {{ic|Alt+Shift}} をレイアウト切り替えのショートカットとして設定するには、{{ic|XkbOptions}} で {{ic|grp:alt_shift_toggle}} を使用してください。 |
||
− | To set {{ic|Alt+Shift}} as a layout shortcut, use {{ic|grp:alt_shift_toggle}} in {{ic|XkbOptions}}. |
||
+ | しかし、XKB には、{{ic|Alt+Shift+''any_key''}} という形式の他のショートカットの機能を破壊してしまうという[https://gitlab.freedesktop.org/xorg/app/setxkbmap/-/issues/10 既知の問題]が存在します。さらに、XKB は一部のキーボードレイアウトで右 {{ic|Alt}} を {{ic|AltGr}} とデフォルトで設定する場合があり、このせいで {{ic|RAlt+RShift}} でレイアウト切り替えを行うことができなくなってしまいます。 |
||
− | However, there is a [https://gitlab.freedesktop.org/xorg/app/setxkbmap/-/issues/10 known issue] with XKB that causes other shortcuts of the type {{ic|Alt+Shift+''any_key''}} to break. Moreover, XKB may set the right {{ic|Alt}} to be {{ic|AltGr}} by default in some keyboard layouts, making {{ic|RAlt+RShift}} not working for layout switching. |
||
+ | 回避策として、以下を {{ic|sxhkdrc}} に追加することで [[sxhkd]] をレイアウト切り替えに使用することができます: |
||
− | As a workaround, [[sxhkd]] may be used to switch layouts by adding the following to {{ic|sxhkdrc}}: |
||
Shift_L + Alt_L |
Shift_L + Alt_L |
||
155行目: | 155行目: | ||
setxkbmap -query | grep -q 'fr' && setxkbmap us || setxkbmap fr,us |
setxkbmap -query | grep -q 'fr' && setxkbmap us || setxkbmap fr,us |
||
+ | とある理由により、{{ic|Alt}} は {{ic|Shift}} の前に押さないと sxhkd が認識しないことに注意してください。 |
||
− | Note that for some reason, {{ic|Alt}} must be pressed before {{ic|Shift}} to be detected by sxhkd. |
||
=== Ctrl+Alt+Backspace で Xorg を終了する === |
=== Ctrl+Alt+Backspace で Xorg を終了する === |
||
− | デフォルトで、キーの組み合わせ {{ic|Ctrl+Alt+Backspace}} は無効になっています。{{ic|XkbOptions}} に {{ic|terminate:ctrl_alt_bksp}} を指定することで有効にできます。また、{{ic|xmodmap}} でキーを {{ic|Terminate_Server}} にバインドすることでも設定できます (既存の {{ic|XkbOptions}} 設定は元に戻ります)。 |
+ | デフォルトで、キーの組み合わせ {{ic|Ctrl+Alt+Backspace}} は無効になっています。{{ic|XkbOptions}} に {{ic|terminate:ctrl_alt_bksp}} を指定することで有効にできます。また、{{ic|xmodmap}} でキーを {{ic|Terminate_Server}} にバインドすることでも設定できます (既存の {{ic|XkbOptions}} 設定は元に戻ります)。どちらにしても {{ic|ServerFlags}} の {{ic|DontZap}} 設定を "off" にする必要がありますが、2004年からデフォルトで "off" になっています [https://www.x.org/archive/X11R6.8.0/doc/xorg.conf.5.html]。 |
− | |||
− | どちらにしても {{ic|ServerFlags}} の {{ic|DontZap}} 設定を "off" にする必要がありますが、バージョン R6.8.0 (2004年) からデフォルト設定となっています [https://www.x.org/archive/X11R6.8.0/doc/xorg.conf.5.html]。 |
||
=== Caps Lock と左 Control を交換する === |
=== Caps Lock と左 Control を交換する === |
||
171行目: | 169行目: | ||
=== マウスキーを有効にする === |
=== マウスキーを有効にする === |
||
− | 現在[[Wikipedia:ja:マウスキー|マウスキー]]はデフォルトで無効にされているので {{ic|keypad:pointerkeys}} を {{ic|XkbOptions}} に加えて手動で有効にする必要があります。{{ic|Shift+NumLock}} ショートカットによってマウスキーの切り替えが行えます。 |
+ | 現在、[[Wikipedia:ja:マウスキー|マウスキー]] (マウスに付いているキーのことではありません) はデフォルトで無効にされているので {{ic|keypad:pointerkeys}} を {{ic|XkbOptions}} に加えて手動で有効にする必要があります。{{ic|Shift+NumLock}} ショートカットによってマウスキーの切り替えが行えます。 |
+ | |||
+ | 高度な設定については [[X keyboard extension#マウスの操作]] も参照してください。 |
||
+ | |||
+ | === AltGr の設定 === |
||
+ | |||
+ | AltGr([[Wikipedia:AltGr key#History|Alternate Graphic]])キーは、キーボード上の追加の文字や記号にアクセスするために使用できます。Shift キーと同様に修飾キーとして機能しますが、キーの第 3 レベルのマッピングにアクセスすることができます。マッピングレベルは以下のように機能します: |
||
+ | |||
+ | * 1st Level: デフォルトのキー層(修飾キーなし)。 |
||
+ | * 2nd Level: Shift キーを押すことでアクセスでき、二次的な文字(例: 大文字化)や記号(例: @ 記号)を提供します。 |
||
+ | * 3rd Level: AltGr キーを押すことでアクセスでき、第 1 レベルおよび第 2 レベルでは利用できない追加の文字や記号にアクセスできます。 |
||
+ | |||
+ | 2nd レベルの文字は通常、キーボードのキーに印刷されており、見つけるのは簡単です。一方、追加レベルの文字を確認するには、{{ic|xmodmap -pk}} を使用するか、{{ic|/usr/share/X11/xkb/symbols}} にあるキーボードマッピングを参照することができます。 |
||
=== コンポーズキーの設定 === |
=== コンポーズキーの設定 === |
||
+ | 通常、典型的なキーボードにはコンポーズキーなんて存在しませんが、既存のキーを[[Wikipedia:Compose key|コンポーズキー]]として設定することができます。 |
||
− | [[Wikipedia:Compose key|コンポーズキー]]を押して他のキーを押すと、ユニコード文字が打ち込まれます。例えば、多くの設定では {{ic|''compose_key'' ' e}} を押すことで {{ic|é}} が作られます。キーボードレイアウトとは異なる言語を入力する必要があるときに有用です (英語キーボードでフランス語・イタリア語・ドイツ語を入力する場合など)。 |
||
+ | まず {{ic|Compose}} キーを押し、その後に追加のキー (通常は2つ) を押します。典型的な用途としては、キーボードの言語以外の文字を入力するためや、{{ic|AltGr}} 修飾キーでは入力できないあまり使用されない文字を入力するためなどがあります。例えば、{{ic|Compose}} {{ic|'}} {{ic|e}} を押すと {{ic|é}} になり、{{ic|Compose}} {{ic|-}} {{ic|-}} {{ic|-}} を押すと "エムダッシュ" {{ic|—}} になります。 |
||
− | 例えば、右の {{ic|Alt}} キーをコンポーズキーにしたいのなら、{{ic|XkbOptions}} に {{ic|compose:ralt}} を指定してください。 |
||
+ | いくつかの風変わりなキーボードには {{ic|Compose}} キーがありますが、通常、すでにあるキーを {{ic|Compose}} キーに置き換えることで使えるようにします。例えば、{{ic|Menu}} キーを {{ic|Compose}} キーにするには、[[デスクトップ環境]]の設定を使うか、{{ic|XkbOptions}} に {{ic|compose:menu}} を渡します ([[#setxkbmap を使う|setxkbmap]] の場合は {{ic|setxkbmap -option compose:menu}})。利用可能なキー置き換えは {{ic|/usr/share/X11/xkb/rules/base.lst}} で定義されています: |
||
− | 他のキーをコンポーズキーにすることもできます。{{ic|/usr/share/X11/xkb/rules/base.lst}} 内の {{ic|compose:}} で始まっているのがそうです。利用できるオプションの完全な一覧を表示するには、次のコマンドを実行してください: |
||
$ grep "compose:" /usr/share/X11/xkb/rules/base.lst |
$ grep "compose:" /usr/share/X11/xkb/rules/base.lst |
||
+ | |||
+ | 欲しいキーマッピングがこのファイルにない場合、[[xmodmap]] を使ってキーを {{ic|Multi_key}} keysym にマップすることもできます。{{ic|Multi_key}} keysym はデフォルトでコンポーズキーとして機能します (''xmodmap'' の設定は ''setxkbmap'' によってリセットされることに注意してください)。 |
||
==== キーの組み合わせ ==== |
==== キーの組み合わせ ==== |
||
− | コンポーズキーのデフォルトの |
+ | コンポーズキーのデフォルトの組み合わせは {{ic|/usr/share/X11/locale/''used_locale''/Compose}} ({{ic|''used_locale''}} は {{ic|en_US.UTF-8}} などです) に保存されている[[ロケール]]によります。 |
− | デフォルトのファイルを {{ic|~/.XCompose}} にコピーして |
+ | 先のデフォルトのファイルを {{ic|~/.XCompose}} にコピーして、独自のコンポーズキーの組み合わせを定義することができます。または、空の {{ic|~/.XCompose}} を作成し、{{ic|include "%L"}} を使ってデフォルトのファイルをインクルードすることもできます。例えば: |
+ | {{hc|~/.XCompose|<nowiki> |
||
− | ただし、GTK はデフォルトで [[Wikipedia:ja:XIM|XIM]] を使わないので {{ic|~/.XCompose}} に設定したキーが使えません。この問題は {{ic|~/.xprofile}} に {{ic|1=export GTK_IM_MODULE=xim}} や {{ic|1=export XMODIFIERS="@im=none"}} を追加して GTK に XIM を使わせることで修正できます。 |
||
+ | include "%L" |
||
+ | <Multi_key> <g> <a> : "α" |
||
− | {{Tip|XIM はとても古く、他の入力メソッドの方がうまくいくかもしれません: [[Smart Common Input Method platform|SCIM]], [[Uim を使って日本語を入力|uim]], [[IBus]] など。詳しくは[[国際化#Xorg での入力]]を見て下さい。}} |
||
+ | <Multi_key> <g> <b> : "β" |
||
+ | <Multi_key> <g> <g> : "γ" |
||
+ | </nowiki>}} |
||
+ | コンポーズキー ({{ic|~/.XCompose}} 内では {{ic|<Multi_key>}} と表記しています) は、数千もの有効な Unicode 文字のどれでも機能します (基本多言語面外のものも含む)。{{man|5|Compose}} を見てください。XCompose ファイルの形式について説明されています。 |
||
− | === 通貨記号 === |
||
+ | ただし、GTK はデフォルトで [[Wikipedia:ja:XIM|XIM]] を使わないので {{ic|~/.XCompose}} に設定したキーが使えません。この問題は、[[環境変数#グラフィック環境|グラフィカル環境の変数]] {{ic|1=GTK_IM_MODULE=xim}} や {{ic|1=XMODIFIERS="@im=none"}} の両方/片方を設定して GTK に XIM の使用を強制することで修正できます。 |
||
− | ほとんどのヨーロッパ言語キーボードでは {{ic|5}} キーの上にユーロ記号 (€) が印字されています。{{ic|ALT}}+{{ic|5}} などでユーロを打てるようにするには、{{ic|lv3:lalt_switch}} や {{ic|eurosign:5}} オプションを使って下さい。 |
||
+ | |||
+ | {{Tip|XIM はとても古く、[[IBus]] や [[Fcitx5]] などの他の入力メソッドの方がうまくいくかもしれません。詳細は [[インプットメソッド]] を参照してください。}} |
||
+ | |||
+ | {{Note|XIM では {{ic|Ctrl+Shift+u}} の組み合わせで Unicode 文字の挿入ができません。}} |
||
+ | |||
+ | === 他のキーで通貨記号を入力する === |
||
+ | |||
+ | ほとんどのヨーロッパ言語キーボードでは {{ic|5}} キーにユーロ記号 (€) が印字されています。{{ic|Alt+5}} などでユーロを打てるようにするには、{{ic|lv3:lalt_switch}} と {{ic|eurosign:5}} オプションを使って下さい。 |
||
ルピー記号 (₹) は同じように {{ic|rupeesign:4}} で使うことができます。 |
ルピー記号 (₹) は同じように {{ic|rupeesign:4}} で使うことができます。 |
||
201行目: | 225行目: | ||
=== Caps Lock が押されたときにすぐに状態を切り替える === |
=== Caps Lock が押されたときにすぐに状態を切り替える === |
||
− | 大文字を |
+ | 大文字を Caps Lock キーを使って打つ人は、Caps Lock の状態を切り替える時に短い遅延が発生し、2文字以上が大文字になってしまうという経験があるかもしれません (例: ''THe''、''ARch LInux'')。これは、Caps Lock キーの有効化は即座に起こりますが、無効化は2つ目のキーが押されたときにしか起こらないからです。この挙動は[[Wikipedia:Caps_lock#History|タイプライター由来]]です。タイプライターでは Caps Lock の機能はシフトされた活字棒を物理的にロックすることで実現されていて、Shift キーを押して離すとロックが解除されていました。 |
− | オペレーティングシステム |
+ | 一部の人気なオペレーティングシステムでは意図的 (一部の人々にとってはこの挙動は紛らわしいため) またはミスでこの挙動が削除されていますが、これは好みの問題です。現在、この挙動を持たない他のオペレーティングシステムから反映された挙動に切り替える簡単な方法が存在しないため、バグレポートは X サーバのバグトラッカーに投稿されたままです。この問題を追跡したい場合は、バグレポートと最新の進捗状況が [https://bugs.freedesktop.org/show_bug.cgi?id=27903] と [https://gitlab.freedesktop.org/xorg/xserver/issues/312] で見られます。 |
==== 解決方法 ==== |
==== 解決方法 ==== |
||
230行目: | 254行目: | ||
リロードした設定は再起動すると消えてしまうため、X の起動時に上記のコマンドを自動的に実行させるようにしても良いでしょう。 |
リロードした設定は再起動すると消えてしまうため、X の起動時に上記のコマンドを自動的に実行させるようにしても良いでしょう。 |
||
+ | == ワンクリックキーの機能 == |
||
− | == One-click key functions == |
||
+ | {{pkg|xcape}} を使用することで、追加のワンクリック機能を修飾キーに割り当てることができます。例えば、{{ic|CapsLock}} を、1回だけ押した場合は {{ic|Escape}} として、他のキーと一緒に使った場合は {{ic|Control}} として機能させることができます。まず、上で説明したように [[#Caps Lock と左 Control を交換する|setxkbmap]] を使って {{ic|Control}} の交換を設定し、そして ''xcape'' を使って {{ic|Escape}} の関連付けを設定してください: |
||
− | To assign an additional one-click function to a modifier key, you can use {{pkg|xcape}}. For example it is possible to have {{ic|CapsLock}} work as {{ic|Escape}} when pressed alone, and as {{ic|Control}} when used with another key. First set the {{ic|Control}} swapping using [[#Swapping Caps Lock with Left Control|setxkbmap]] as mentioned earlier, and ''xcape'' to set the {{ic|Escape}} association: |
||
$ xcape -e 'Caps_Lock=Escape' |
$ xcape -e 'Caps_Lock=Escape' |
||
− | + | 複数の関連付けをセミコロンで区切って設定することもできます。例えば: {{ic|1=Caps_Lock=Escape;Shift_L=Escape}} |
|
+ | タイムアウト (デフォルトでは 500 ms) よりも長くキーを押すと、''xcape'' はキーイベントを生成しません。 |
||
− | If you hold a key for longer than the timeout value (default 500 ms), ''xcape'' will not generate a key event. |
||
− | == |
+ | == オートリピートの遅延と速度の調整 == |
− | '' |
+ | ''オートリピート遅延'' (タイプマチック遅延とも) はキーリピートを始めるのにキーを押し続ける必要がある時間 (典型的にはミリ秒) を表します。キーリピートが開始されると、''オートリピート速度'' (タイプマチック速度とも) によって指定された頻度 (通常 Hz) で文字が繰り返されます。これらの設定は Xorg と[[Linux コンソール#オートリピートの遅延と速度の調整|仮想コンソール]]とで別々に設定されることに注意してください。 |
+ | |||
+ | === xset を使う === |
||
+ | |||
+ | ''xset'' ツール ({{Pkg|xorg-xset}} によって提供) を使うことで、アクティブな X サーバに対してオートリピートの遅延と速度を設定することができます。しかし、実行時に特定のアクションを行うと、X サーバがこれらの変更をリセットし、デフォルトの設定に戻してしまう場合があります。 |
||
+ | |||
+ | 使用方法: |
||
$ xset r rate ''delay'' [''rate''] |
$ xset r rate ''delay'' [''rate''] |
||
− | 例えば |
+ | 例えば、オートリピート遅延を 200ms に設定し、オートリピート速度を 30Hz に設定するには、以下のコマンドを使ってください ([[xinitrc]] や ''xautocfg'' を使うことでこの設定を永続化させることができます): |
$ xset r rate 200 30 |
$ xset r rate 200 30 |
||
− | + | 遅延も速度も指定せずにコマンドを実行すると、オートリピートの設定がデフォルト (遅延 660ms、速度 25Hz) にリセットされます: |
|
$ xset r rate |
$ xset r rate |
||
+ | === xautocfg を使う === |
||
− | === Using AutoRepeat configuration option === |
||
+ | {{AUR|xautocfg}} は、新しく接続されたデバイスに対して自動的にリピート速度の設定を適用することができます。このツールは X11 のイベントを監視し、新しいキーボードが接続された際にリピート速度の設定をそのキーボードに適用します。 |
||
− | To persist the configuration and change the ''seat defaults'', you can create an Xorg configuration file as described in [[#Using X configuration files]], and add a {{ic|AutoRepeat}} section entry: [https://cgit.freedesktop.org/xorg/xserver/commit/?id=4f95d87d66b6a6e11aa8616c9242e0907ffee66b] |
||
+ | |||
+ | * 設定を調節してください。 |
||
+ | * {{ic|xautocfg.service}} [[ユーザーユニット]]を有効化するか、{{ic|xautocfg}} を手動で起動してください。 |
||
+ | |||
+ | {{ic|graphical-session.target}} がウィンドウマネージャかデスクトップ環境によって開始されていることを確認してください! |
||
+ | |||
+ | {{hc|~/.config/xautocfg.cfg|2= |
||
+ | [keyboard] |
||
+ | |||
+ | # いつリピートを開始するか |
||
+ | delay = 220 |
||
+ | |||
+ | # hz 単位のリピート速度 |
||
+ | rate = 45 |
||
+ | }} |
||
+ | |||
+ | === AutoRepeat 設定オプションを使う === |
||
+ | |||
+ | 設定をシステム全体で永続化させるには、[[#X の設定ファイルを使う]] で説明されているように Xorg の設定ファイルでデフォルト値を変更し、{{ic|AutoRepeat}} セクションエントリを追加してください: [https://cgit.freedesktop.org/xorg/xserver/commit/?id=4f95d87d66b6a6e11aa8616c9242e0907ffee66b] |
||
+ | |||
+ | {{ic|AutoRepeat}} のパラメータはミリ秒単位の {{ic|delay}} と {{ic|interval}} です。''xset'' の 25Hz {{ic|rate}} を設定したい場合、それに対応する {{ic|interval}} は 1000 / 25 = 40 ミリ秒となります。 |
||
{{hc|/etc/X11/xorg.conf.d/00-keyboard.conf| |
{{hc|/etc/X11/xorg.conf.d/00-keyboard.conf| |
||
Section "InputClass" |
Section "InputClass" |
||
... |
... |
||
− | Option "AutoRepeat" "200 |
+ | Option "AutoRepeat" "200 40" |
... |
... |
||
EndSection |
EndSection |
||
}} |
}} |
||
+ | |||
+ | === X サーバのスタートアップオプションを使う === |
||
+ | |||
+ | 設定を永続化させるもう一つの方法は、以下のオプションを使って設定を X サーバにスタートアップ時に渡すことです: |
||
+ | |||
+ | * {{ic|-ardelay ''ミリ秒''}} - オートリピート遅延を設定します (オートリピートが始まるまでにキーを押す必要のある時間をミリ秒で)。 |
||
+ | * {{ic|-arinterval ''ミリ秒''}} - オートリピート間隔を設定します (オートリピートによって生成されるキーストロークの時間間隔をミリ秒で)。 |
||
+ | |||
+ | X サーバのオプションの完全なリストは {{man|1|Xserver}} を、それらのオプションを渡す方法についてはあなたの[[ディスプレイマネージャ]]のマニュアルなどを参照してください。 |
||
== 参照 == |
== 参照 == |
||
− | * [http://madduck.net/docs/extending-xkb/ Madduck |
+ | * [https://web.archive.org/web/20170825051821/http://madduck.net:80/docs/extending-xkb/ XKB の拡張に関する Madduck のガイド] (Wayback Machine でアーカイブ済み) |
+ | |||
+ | {{TranslationStatus|Xorg/Keyboard configuration|2023-07-30|783565}} |
2024年8月16日 (金) 23:45時点における最新版
この記事は Xorg のキーボード設定の基本を説明しています。キーボードレイアウトの変更や追加のキーマッピングなどの高度な話題については、それぞれ X keyboard extension と 特別なキーボードキー を参照してください。
Xorg サーバーはキーボードレイアウトを定義するために X keyboard extension (XKB) を使用します。オプションで xmodmap を使って内部のキーマップテーブルに直接アクセスすることもできますが、複雑な作業にはお勧めできません。また、systemd の localectl を使って Xorg サーバーと仮想コンソールの両方でキーボードレイアウトを定義することができます。
キーボード設定の表示
次のコマンドを使うことで 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-state print "%s"
de
キーボードレイアウトの設定
Xorg のキーボードレイアウトは複数の方法で設定することが可能です。以下は使用されるオプションの説明です:
XkbModel
はキーボードのモデルを選択します。キーボード上の一部の追加キーにのみ影響を与えます。pc104
とpc105
は安全なフォールバックです。しかし、例えばラップトップには通常いくつかの追加キーが存在し、適切なモデルを設定することでそれらのキーを利用することができます。XkbLayout
はキーボードのレイアウトを選択します。レイアウトを素早く切り替えたい場合などは、カンマで区切ることで複数のレイアウトを指定することが可能です。XkbVariant
はXkbLayout
で利用可能な特定のレイアウトのバリアントを選択します。例えば、sk
(Slovak) のデフォルトのバリアントはqwertz
ですが、手動でqwerty
などを指定することができます。XkbOptions
には追加のオプションを含めます (コンマ区切り)。レイアウトの切り替えや、通知 LED、コンポーズモードなどを指定するために使われます。例は #よく使われる XKB オプション セクションを参照してください。
レイアウトの名前は基本的に2文字の国名コードです。キーボードのモデル・レイアウト・バリアント・オプション、そしてその説明を見たいときは /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
バリアント、そしてレイアウトの切り替えに Win+Space
を使うよう設定します。詳しい情報は xkeyboard-config(7) を見てください。
setxkbmap を使う
setxkbmap は、現在の X セッション限定でキーボードレイアウトを設定します。しかし、xinitrc や xprofile を使うことで設定を永続化させることができます。これは、次の #X の設定ファイルを使う で指定したシステム全体の設定をオーバーライドします。しかし、外部キーボードなどの場合は、setxkbmap が実行された時にキーボードのデバイス ID が指定されなかった場合、設定は永続化されません。また、キーボードが X サーバのコアキーボードデバイスである場合もです。
使用方法は次の通りです (setxkbmap(1) を参照):
$ setxkbmap [-model xkb_model] [-layout xkb_layout] [-variant xkb_variant] [-option xkb_options]
レイアウトだけを変更するには (-layout
はデフォルトのフラグです):
$ setxkbmap xkb_layout
複数のカスタマイズを施すには:
$ setxkbmap -model pc104 -layout jp,us -variant ,dvorak -option grp:win_space_toggle
X の設定ファイルを使う
X の設定ファイルの構文は Xorg#設定 で説明しています。この方法はシステム全体で適用される設定を作成して再起動後も設定が持続します。
以下サンプル:
/etc/X11/xorg.conf.d/00-keyboard.conf
Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "jp,us" Option "XkbModel" "pc104" Option "XkbVariant" ",dvorak" Option "XkbOptions" "grp:win_space_toggle" EndSection
localectl を使う
X の設定ファイルを手動で編集する代わりに、localectl ツールを使うことができます。このツールは設定を /etc/X11/xorg.conf.d/00-keyboard.conf
に保存します。起動時に localectl は変更を上書きするので、手動でこのファイルを編集してはいけません。
使用法は次の通りです:
# localectl [--no-convert] set-x11-keymap layout [model [variant [options]]]
model, variant または options を設定するには、 直前のすべてのフィールドを指定する必要がありますが、 ""
で空文字列を渡すことで、 直前のフィールドをスキップすることができます。--no-convert
オプションが渡されない限り、指定されたキーマップは最も近いコンソールのキーマップに変換され、 vconsole.conf
のコンソール設定に適用されることもあります。詳しくは localectl(1) を参照してください。
次のコマンドは上のサンプルと全く同じ内容で /etc/X11/xorg.conf.d/00-keyboard.conf
ファイルを作成します:
# localectl --no-convert set-x11-keymap jp,us pc104 ,dvorak grp:win_space_toggle
よく使われる XKB オプション
キーボードレイアウトの切り替え
キーボードレイアウトを簡単に切り替えられるようにするには、まず、切り替えたい複数のレイアウトを指定してください (最初のレイアウトがデフォルトになります)。次に、切り替えに使用するキー (もしくはキーの組み合わせ) を指定します。例えば、CapsLock
キーで US と Swedish レイアウトを切り替えたい場合、XkbLayout
の引数に us,se
を XkbOptions
の引数に grp:caps_toggle
を指定してください。XkbLayout
の個数は XkbVariant
の個数と一致している必要があります。別のバリアント間だけで切り替えたい場合は、同じレイアウトを重複して指定してください (例: de,de
)。
利用可能なレイアウト (及びバリアント) のリストは xkeyboard-config(7) § LAYOUTS で見られます。レイアウトの切り替えに使用可能なキーの組み合わせは xkeyboard-config(7) § Switching to another layout にリストアップされています。
注意点として、grp:alts_toggle
オプションには信頼性がなく、おそらく修正されないでしょう。なので、他のキーの組み合わせが推奨されます。
Alt Shift で言語を切り替える
Alt+Shift
をレイアウト切り替えのショートカットとして設定するには、XkbOptions
で grp:alt_shift_toggle
を使用してください。
しかし、XKB には、Alt+Shift+any_key
という形式の他のショートカットの機能を破壊してしまうという既知の問題が存在します。さらに、XKB は一部のキーボードレイアウトで右 Alt
を AltGr
とデフォルトで設定する場合があり、このせいで RAlt+RShift
でレイアウト切り替えを行うことができなくなってしまいます。
回避策として、以下を sxhkdrc
に追加することで sxhkd をレイアウト切り替えに使用することができます:
Shift_L + Alt_L setxkbmap -query | grep -q 'fr' && setxkbmap us || setxkbmap fr,us Shift_R + Alt_R setxkbmap -query | grep -q 'fr' && setxkbmap us || setxkbmap fr,us
とある理由により、Alt
は Shift
の前に押さないと sxhkd が認識しないことに注意してください。
Ctrl+Alt+Backspace で Xorg を終了する
デフォルトで、キーの組み合わせ Ctrl+Alt+Backspace
は無効になっています。XkbOptions
に terminate:ctrl_alt_bksp
を指定することで有効にできます。また、xmodmap
でキーを Terminate_Server
にバインドすることでも設定できます (既存の XkbOptions
設定は元に戻ります)。どちらにしても ServerFlags
の DontZap
設定を "off" にする必要がありますが、2004年からデフォルトで "off" になっています [2]。
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
ショートカットによってマウスキーの切り替えが行えます。
高度な設定については X keyboard extension#マウスの操作 も参照してください。
AltGr の設定
AltGr(Alternate Graphic)キーは、キーボード上の追加の文字や記号にアクセスするために使用できます。Shift キーと同様に修飾キーとして機能しますが、キーの第 3 レベルのマッピングにアクセスすることができます。マッピングレベルは以下のように機能します:
- 1st Level: デフォルトのキー層(修飾キーなし)。
- 2nd Level: Shift キーを押すことでアクセスでき、二次的な文字(例: 大文字化)や記号(例: @ 記号)を提供します。
- 3rd Level: AltGr キーを押すことでアクセスでき、第 1 レベルおよび第 2 レベルでは利用できない追加の文字や記号にアクセスできます。
2nd レベルの文字は通常、キーボードのキーに印刷されており、見つけるのは簡単です。一方、追加レベルの文字を確認するには、xmodmap -pk
を使用するか、/usr/share/X11/xkb/symbols
にあるキーボードマッピングを参照することができます。
コンポーズキーの設定
通常、典型的なキーボードにはコンポーズキーなんて存在しませんが、既存のキーをコンポーズキーとして設定することができます。
まず Compose
キーを押し、その後に追加のキー (通常は2つ) を押します。典型的な用途としては、キーボードの言語以外の文字を入力するためや、AltGr
修飾キーでは入力できないあまり使用されない文字を入力するためなどがあります。例えば、Compose
'
e
を押すと é
になり、Compose
-
-
-
を押すと "エムダッシュ" —
になります。
いくつかの風変わりなキーボードには Compose
キーがありますが、通常、すでにあるキーを Compose
キーに置き換えることで使えるようにします。例えば、Menu
キーを Compose
キーにするには、デスクトップ環境の設定を使うか、XkbOptions
に compose:menu
を渡します (setxkbmap の場合は setxkbmap -option compose:menu
)。利用可能なキー置き換えは /usr/share/X11/xkb/rules/base.lst
で定義されています:
$ grep "compose:" /usr/share/X11/xkb/rules/base.lst
欲しいキーマッピングがこのファイルにない場合、xmodmap を使ってキーを Multi_key
keysym にマップすることもできます。Multi_key
keysym はデフォルトでコンポーズキーとして機能します (xmodmap の設定は setxkbmap によってリセットされることに注意してください)。
キーの組み合わせ
コンポーズキーのデフォルトの組み合わせは /usr/share/X11/locale/used_locale/Compose
(used_locale
は en_US.UTF-8
などです) に保存されているロケールによります。
先のデフォルトのファイルを ~/.XCompose
にコピーして、独自のコンポーズキーの組み合わせを定義することができます。または、空の ~/.XCompose
を作成し、include "%L"
を使ってデフォルトのファイルをインクルードすることもできます。例えば:
~/.XCompose
include "%L" <Multi_key> <g> <a> : "α" <Multi_key> <g> <b> : "β" <Multi_key> <g> <g> : "γ"
コンポーズキー (~/.XCompose
内では <Multi_key>
と表記しています) は、数千もの有効な Unicode 文字のどれでも機能します (基本多言語面外のものも含む)。Compose(5) を見てください。XCompose ファイルの形式について説明されています。
ただし、GTK はデフォルトで XIM を使わないので ~/.XCompose
に設定したキーが使えません。この問題は、グラフィカル環境の変数 GTK_IM_MODULE=xim
や XMODIFIERS="@im=none"
の両方/片方を設定して GTK に XIM の使用を強制することで修正できます。
他のキーで通貨記号を入力する
ほとんどのヨーロッパ言語キーボードでは 5
キーにユーロ記号 (€) が印字されています。Alt+5
などでユーロを打てるようにするには、lv3:lalt_switch
と eurosign:5
オプションを使って下さい。
ルピー記号 (₹) は同じように rupeesign:4
で使うことができます。
Caps Lock が押されたときにすぐに状態を切り替える
大文字を Caps Lock キーを使って打つ人は、Caps Lock の状態を切り替える時に短い遅延が発生し、2文字以上が大文字になってしまうという経験があるかもしれません (例: THe、ARch LInux)。これは、Caps Lock キーの有効化は即座に起こりますが、無効化は2つ目のキーが押されたときにしか起こらないからです。この挙動はタイプライター由来です。タイプライターでは Caps Lock の機能はシフトされた活字棒を物理的にロックすることで実現されていて、Shift キーを押して離すとロックが解除されていました。
一部の人気なオペレーティングシステムでは意図的 (一部の人々にとってはこの挙動は紛らわしいため) またはミスでこの挙動が削除されていますが、これは好みの問題です。現在、この挙動を持たない他のオペレーティングシステムから反映された挙動に切り替える簡単な方法が存在しないため、バグレポートは X サーバのバグトラッカーに投稿されたままです。この問題を追跡したい場合は、バグレポートと最新の進捗状況が [3] と [4] で見られます。
解決方法
まず、キーボードの設定をファイルにエクスポートしてください:
$ xkbcomp -xkb $DISPLAY xkbmap
xkbmap ファイルの中から key <CAPS> から始まる Caps Lock のセクションを探してください:
key <CAPS> { [ Caps_Lock ] };
以下のコードでセクション全体を置き換えてください:
key <CAPS> { repeat=no, type[group1]="ALPHABETIC", symbols[group1]=[ Caps_Lock, Caps_Lock], actions[group1]=[ LockMods(modifiers=Lock), Private(type=3,data[0]=1,data[1]=3,data[2]=3)] };
キーボード設定を保存してリロード:
$ xkbcomp -w 0 xkbmap $DISPLAY
リロードした設定は再起動すると消えてしまうため、X の起動時に上記のコマンドを自動的に実行させるようにしても良いでしょう。
ワンクリックキーの機能
xcape を使用することで、追加のワンクリック機能を修飾キーに割り当てることができます。例えば、CapsLock
を、1回だけ押した場合は Escape
として、他のキーと一緒に使った場合は Control
として機能させることができます。まず、上で説明したように setxkbmap を使って Control
の交換を設定し、そして xcape を使って Escape
の関連付けを設定してください:
$ xcape -e 'Caps_Lock=Escape'
複数の関連付けをセミコロンで区切って設定することもできます。例えば: Caps_Lock=Escape;Shift_L=Escape
タイムアウト (デフォルトでは 500 ms) よりも長くキーを押すと、xcape はキーイベントを生成しません。
オートリピートの遅延と速度の調整
オートリピート遅延 (タイプマチック遅延とも) はキーリピートを始めるのにキーを押し続ける必要がある時間 (典型的にはミリ秒) を表します。キーリピートが開始されると、オートリピート速度 (タイプマチック速度とも) によって指定された頻度 (通常 Hz) で文字が繰り返されます。これらの設定は Xorg と仮想コンソールとで別々に設定されることに注意してください。
xset を使う
xset ツール (xorg-xset によって提供) を使うことで、アクティブな X サーバに対してオートリピートの遅延と速度を設定することができます。しかし、実行時に特定のアクションを行うと、X サーバがこれらの変更をリセットし、デフォルトの設定に戻してしまう場合があります。
使用方法:
$ xset r rate delay [rate]
例えば、オートリピート遅延を 200ms に設定し、オートリピート速度を 30Hz に設定するには、以下のコマンドを使ってください (xinitrc や xautocfg を使うことでこの設定を永続化させることができます):
$ xset r rate 200 30
遅延も速度も指定せずにコマンドを実行すると、オートリピートの設定がデフォルト (遅延 660ms、速度 25Hz) にリセットされます:
$ xset r rate
xautocfg を使う
xautocfgAUR は、新しく接続されたデバイスに対して自動的にリピート速度の設定を適用することができます。このツールは X11 のイベントを監視し、新しいキーボードが接続された際にリピート速度の設定をそのキーボードに適用します。
- 設定を調節してください。
xautocfg.service
ユーザーユニットを有効化するか、xautocfg
を手動で起動してください。
graphical-session.target
がウィンドウマネージャかデスクトップ環境によって開始されていることを確認してください!
~/.config/xautocfg.cfg
[keyboard] # いつリピートを開始するか delay = 220 # hz 単位のリピート速度 rate = 45
AutoRepeat 設定オプションを使う
設定をシステム全体で永続化させるには、#X の設定ファイルを使う で説明されているように Xorg の設定ファイルでデフォルト値を変更し、AutoRepeat
セクションエントリを追加してください: [5]
AutoRepeat
のパラメータはミリ秒単位の delay
と interval
です。xset の 25Hz rate
を設定したい場合、それに対応する interval
は 1000 / 25 = 40 ミリ秒となります。
/etc/X11/xorg.conf.d/00-keyboard.conf
Section "InputClass" ... Option "AutoRepeat" "200 40" ... EndSection
X サーバのスタートアップオプションを使う
設定を永続化させるもう一つの方法は、以下のオプションを使って設定を X サーバにスタートアップ時に渡すことです:
-ardelay ミリ秒
- オートリピート遅延を設定します (オートリピートが始まるまでにキーを押す必要のある時間をミリ秒で)。-arinterval ミリ秒
- オートリピート間隔を設定します (オートリピートによって生成されるキーストロークの時間間隔をミリ秒で)。
X サーバのオプションの完全なリストは Xserver(1) を、それらのオプションを渡す方法についてはあなたのディスプレイマネージャのマニュアルなどを参照してください。
参照
- XKB の拡張に関する Madduck のガイド (Wayback Machine でアーカイブ済み)