「Xorg/キーボード設定」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→通貨記号: add === Switching state immediately when Caps Lock is pressed ===) |
Kusanaginoturugi (トーク | 投稿記録) (→コンポーズキーの設定: 記事を追加) |
||
(2人の利用者による、間の17版が非表示) | |||
1行目: | 1行目: | ||
+ | [[Category:X サーバー]] |
||
[[Category:キーボード設定]] |
[[Category:キーボード設定]] |
||
+ | [[en:Xorg/Keyboard configuration]] |
||
− | [[Category:X サーバー]] |
||
− | [[ |
+ | [[fr:Xorg (Français)/Keyboard configuration]] |
− | [[ |
+ | [[ru:Xorg (Русский)/Keyboard configuration]] |
− | [[ |
+ | [[uk:Xorg (Українська)/Keyboard configuration]] |
{{Related articles start}} |
{{Related articles start}} |
||
− | {{Related| |
+ | {{Related|X keyboard extension}} |
+ | {{Related|Linux コンソール/キーボード設定}} |
||
{{Related|特別なキーボードキー}} |
{{Related|特別なキーボードキー}} |
||
{{Related|Xorg}} |
{{Related|Xorg}} |
||
− | {{Related| |
+ | {{Related|キーボードショートカット}} |
{{Related articles end}} |
{{Related articles end}} |
||
− | この記事 |
+ | この記事は [[Xorg]] のキーボード設定の基本を説明しています。キーボードレイアウトの変更や追加のキーマッピングなどの高度な話題については、それぞれ [[X keyboard extension]] と [[特別なキーボードキー]] を参照してください。 |
− | |||
− | == 概要 == |
||
− | |||
− | Xorg は [[X KeyBoard extension]] (XKB) を使ってキーボードレイアウトを管理しています。また、[[xmodmap]] を使って内部のキーマップテーブルに直接アクセスすることができます。一般的に、単純な作業以外での ''xmodmap'' の使用は推奨されていません。また、[[systemd]] の ''localectl'' を使うことで Xorg サーバーと仮想端末の両方のキーボードレイアウトを定義することもできます。 |
||
+ | Xorg サーバーはキーボードレイアウトを定義するために [[X keyboard extension]] (XKB) を使用します。オプションで [[xmodmap]] を使って内部のキーマップテーブルに直接アクセスすることもできますが、複雑な作業にはお勧めできません。また、[[systemd]] の ''localectl'' を使って Xorg サーバーと仮想コンソールの両方でキーボードレイアウトを定義することができます。 |
||
− | この記事ではほとんどの環境で効果がある XKB を使った低いレベルでの設定を説明していますが、[[GNOME]] などのデスクトップ環境によって設定が上書きされることもあります。デスクトップ環境ごとの情報も読んで下さい: |
||
+ | {{Note|XKB のオプションは、[[GNOME]] や [[KDE]] などのいくつかのデスクトップ環境が提供するツールで上書きすることができます。}} |
||
− | * [[GNOME#XkbOptions でキーボードを変更する]] |
||
− | * [[KDE#キーボードの設定]] |
||
== キーボード設定の表示 == |
== キーボード設定の表示 == |
||
56行目: | 53行目: | ||
{{hc|$ xkb-switch|us}} |
{{hc|$ xkb-switch|us}} |
||
− | * {{AUR|xkblayout-state |
+ | * {{AUR|xkblayout-state-git}}: |
{{hc|$ xkblayout-state print "%s"|de}} |
{{hc|$ xkblayout-state print "%s"|de}} |
||
64行目: | 61行目: | ||
Xorg のキーボードレイアウトは複数の方法で設定することが可能です。以下は使用されるオプションの説明です: |
Xorg のキーボードレイアウトは複数の方法で設定することが可能です。以下は使用されるオプションの説明です: |
||
− | * {{ic|XkbModel}} はキーボードのモデルを選択します。 |
+ | * {{ic|XkbModel}} はキーボードのモデルを選択します。キーボード上の一部の追加キーにのみ影響を与えます。{{ic|pc104}} と {{ic|pc105}} は安全なフォールバックです。しかし、例えばラップトップには通常いくつかの追加キーが存在し、適切なモデルを設定することでそれらのキーを利用することができます。 |
− | * {{ic|XkbLayout}} はキーボードのレイアウトを選択します。レイアウトを素早く切り替えたい場合、カンマで区切ることで複数のレイアウトを指定することが可能です。 |
+ | * {{ic|XkbLayout}} はキーボードのレイアウトを選択します。レイアウトを素早く切り替えたい場合などは、カンマで区切ることで複数のレイアウトを指定することが可能です。 |
− | * {{ic|XkbVariant}} は特定のレイアウトのバリアントを選択します。例えば、{{ic|sk}} のデフォルトのバリアントは {{ic|qwertz}} ですが、手動で {{ic|qwerty}} などを指定することができます。 |
+ | * {{ic|XkbVariant}} は {{ic|XkbLayout}} で利用可能な特定のレイアウトのバリアントを選択します。例えば、{{ic|sk}} (Slovak) のデフォルトのバリアントは {{ic|qwertz}} ですが、手動で {{ic|qwerty}} などを指定することができます。 |
+ | * {{ic|XkbOptions}} には追加のオプションを含めます (コンマ区切り)。レイアウトの切り替えや、通知 LED、コンポーズモードなどを指定するために使われます。例は [[#よく使われる XKB オプション]] セクションを参照してください。 |
||
− | : {{Warning|指定したレイアウトと同じ数だけバリアントを指定してください。デフォルトのバリアントでいい場合は、空文字を指定してください (カンマはそのまま)。例えば、第一にデフォルトの {{ic|us}} レイアウト、第二に {{ic|us}} レイアウトの {{ic|dvorak}} バリアントを使いたい場合、{{ic|XkbLayout}} には {{ic|us,us}} を {{ic|XkbVariant}} には {{ic|,dvorak}} を指定してください。}} |
||
− | * {{ic|XkbOptions}} には追加のオプションを含めます。レイアウトの切り替えや、通知 LED、コンポーズモードなどを指定するために使われます。 |
||
+ | {{Note|指定したレイアウトと同じ数だけバリアントを指定してください。デフォルトのバリアントでいい場合は、空文字を指定してください (カンマはそのまま)。例えば、第一にデフォルトの {{ic|us}} レイアウト、第二に {{ic|us}} レイアウトの {{ic|dvorak}} バリアントを使いたい場合、{{ic|XkbLayout}} には {{ic|us,us}} を {{ic|XkbVariant}} には {{ic|,dvorak}} を指定してください。}} |
||
− | レイアウトの名前は基本的に [[Wikipedia:ISO_3166-1_alpha-2#Officially_assigned_code_elements|2-letter country code]] です。キーボードのモデル・レイアウト・バリアント・オプション、そしてその説明を見たいときは {{ic|/usr/share/X11/xkb/rules/base.lst}} を開いて下さい。また、以下のコマンドを使うことで一覧を表示することができます: |
||
+ | |||
+ | レイアウトの名前は基本的に[[Wikipedia:ISO_3166-1_alpha-2#Officially_assigned_code_elements|2文字の国名コード]]です。キーボードのモデル・レイアウト・バリアント・オプション、そしてその説明を見たいときは {{ic|/usr/share/X11/xkb/rules/base.lst}} を開いて下さい。また、以下のコマンドを使うことで説明なしの一覧を表示することができます: |
||
* {{ic|localectl list-x11-keymap-models}} |
* {{ic|localectl list-x11-keymap-models}} |
||
77行目: | 75行目: | ||
* {{ic|localectl list-x11-keymap-options}} |
* {{ic|localectl list-x11-keymap-options}} |
||
− | 以下のサブセクションに |
+ | 以下のサブセクションにあるサンプルはどれも同じ効果があります。{{ic|pc104}} モデルで、第一レイアウトに {{ic|jp}} 第二レイアウトに {{ic|us}} を、{{ic|us}} レイアウトに {{ic|dvorak}} バリアント、そしてレイアウトの切り替えに {{ic|Win+Space}} を使うよう設定します。詳しい情報は {{man|7|xkeyboard-config}} を見てください。 |
+ | |||
+ | {{Note|[[Fcitx]]/[[IBus]] はキーボードレイアウトの制御を試みるため、これらのフレームワークを使用しているユーザは、以下の方法でうまく行かなかったり、少しの間しか効果がなかったりします。Fcitx のユーザは、1番目の入力メソッドを {{ic|Keyboard - ''layout''}} に設定する必要があります。[[Fcitx#入力メソッドの設定]] を参照してください。IBus のユーザは、X の設定ファイルを使用している場合は Preference -> Advanced で "Use system keyboard layout" オプションを有効化する必要があり、setxkbmap を使用している場合は手動でレイアウトを指定する必要があります。}} |
||
=== setxkbmap を使う === |
=== setxkbmap を使う === |
||
− | ''setxkbmap'' |
+ | ''setxkbmap'' は、現在の X セッション限定でキーボードレイアウトを設定します。しかし、[[xinitrc]] や [[xprofile]] を使うことで設定を永続化させることができます。これは、次の [[#X の設定ファイルを使う]] で指定したシステム全体の設定をオーバーライドします。しかし、外部キーボードなどの場合は、''setxkbmap'' が実行された時にキーボードのデバイス ID が指定されなかった場合、設定は永続化されません。また、キーボードが X サーバのコアキーボードデバイスである場合もです。 |
− | 使用方法は次の通りです: |
+ | 使用方法は次の通りです ({{man|1|setxkbmap}} を参照): |
$ setxkbmap [-model ''xkb_model''] [-layout ''xkb_layout''] [-variant ''xkb_variant''] [-option ''xkb_options''] |
$ setxkbmap [-model ''xkb_model''] [-layout ''xkb_layout''] [-variant ''xkb_variant''] [-option ''xkb_options''] |
||
+ | {{Note|''setxkbmap'' は、コマンドラインで指定したオプションを、以前設定したオプション (ルートウィンドウのプロパティに保存されています) に追加します。以前指定したオプションを全て置き換えたい場合は、最初に {{ic|-option}} フラグに空の引数を渡してください。}} |
||
− | 全てのオプションを指定する必要はありません。例えば、レイアウトだけを変えることができます: |
||
+ | レイアウトだけを変更するには ({{ic|-layout}} はデフォルトのフラグです): |
||
− | $ setxkbmap -layout ''xkb_layout'' |
||
+ | $ setxkbmap ''xkb_layout'' |
||
− | コマンドラインの引数の全ての一覧は {{man|1|setxkbmap}} を見て下さい。 |
||
+ | 複数のカスタマイズを施すには: |
||
− | 例: |
||
− | $ setxkbmap -model pc104 -layout jp,us -variant ,dvorak -option grp: |
+ | $ setxkbmap -model pc104 -layout jp,us -variant ,dvorak -option grp:win_space_toggle |
=== X の設定ファイルを使う === |
=== X の設定ファイルを使う === |
||
+ | |||
+ | {{Note|{{ic|xorg.conf}} は X サーバによってスタートアップ時にパースされます。変更を適用するには、X を再起動してください。}} |
||
X の設定ファイルの構文は [[Xorg#設定]] で説明しています。この方法はシステム全体で適用される設定を作成して再起動後も設定が持続します。 |
X の設定ファイルの構文は [[Xorg#設定]] で説明しています。この方法はシステム全体で適用される設定を作成して再起動後も設定が持続します。 |
||
110行目: | 112行目: | ||
Option "XkbModel" "pc104" |
Option "XkbModel" "pc104" |
||
Option "XkbVariant" ",dvorak" |
Option "XkbVariant" ",dvorak" |
||
− | Option "XkbOptions" "grp: |
+ | Option "XkbOptions" "grp:win_space_toggle" |
EndSection |
EndSection |
||
}} |
}} |
||
126行目: | 128行目: | ||
次のコマンドは上のサンプルと全く同じ内容で {{ic|/etc/X11/xorg.conf.d/00-keyboard.conf}} ファイルを作成します: |
次のコマンドは上のサンプルと全く同じ内容で {{ic|/etc/X11/xorg.conf.d/00-keyboard.conf}} ファイルを作成します: |
||
− | # localectl set-x11-keymap jp,us pc104 ,dvorak grp: |
+ | # localectl --no-convert set-x11-keymap jp,us pc104 ,dvorak grp:win_space_toggle |
+ | |||
+ | {{Tip|''localectl'' は、変数 {{ic|XKBLAYOUT}}、{{ic|XKBMODEL}}、{{ic|XKBVARIANT}}、そして {{ic|XKBOPTIONS}} を使用してキーボードの設定を {{ic|/etc/vconsole.conf}} にも書き込みますが[https://github.com/systemd/systemd/blob/v253/src/locale/localed-util.c#L308-L311]、Xorg サーバはそのファイルから設定を読み込みません。}} |
||
== よく使われる XKB オプション == |
== よく使われる XKB オプション == |
||
132行目: | 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}} を使用してください。 |
||
− | デフォルトで、キーの組み合わせ {{ic|Ctrl+Alt+Backspace}} は無効になっています。{{ic|XkbOptions}} に {{ic|terminate:ctrl_alt_bksp}} を指定することで有効にできます。また、{{ic|xmodmap}} でキーを {{ic|Terminate_Server}} にバインドすることでも設定できます (既存の {{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}} でレイアウト切り替えを行うことができなくなってしまいます。 |
||
− | どちらにしても {{ic|ServerFlags}} の {{ic|DontZap}} 設定を "off" にする必要がありますが、バージョン R6.8.0 (2004年) からデフォルト設定となっています [https://www.x.org/archive/X11R6.8.0/doc/xorg.conf.5.html]。 |
||
+ | 回避策として、以下を {{ic|sxhkdrc}} に追加することで [[sxhkd]] をレイアウト切り替えに使用することができます: |
||
− | === Caps Lock と左 Control を交換する === |
||
+ | Shift_L + Alt_L |
||
− | Caps Lock と左 Control キーを交換するには、{{ic|XkbOptions}} に {{ic|ctrl:swapcaps}} を追加してください。次のコマンドを実行することで似たようなオプションとその説明を表示できます: |
||
+ | setxkbmap -query | grep -q 'fr' && setxkbmap us || setxkbmap fr,us |
||
+ | Shift_R + Alt_R |
||
+ | setxkbmap -query | grep -q 'fr' && setxkbmap us || setxkbmap fr,us |
||
+ | とある理由により、{{ic|Alt}} は {{ic|Shift}} の前に押さないと sxhkd が認識しないことに注意してください。 |
||
− | $ grep -E "(ctrl|caps):" /usr/share/X11/xkb/rules/base.lst |
||
− | === |
+ | === Ctrl+Alt+Backspace で Xorg を終了する === |
+ | デフォルトで、キーの組み合わせ {{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]。 |
||
− | 現在[[Wikipedia:ja:マウスキー|マウスキー]]はデフォルトで無効にされているので {{ic|keypad:pointerkeys}} を {{ic|XkbOptions}} に加えて手動で有効にする必要があります。{{ic|Shift+NumLock}} ショートカットによってマウスキーの切り替えが行えます。 |
||
+ | === Caps Lock と左 Control を交換する === |
||
− | === コンポーズキーの設定 === |
||
+ | Caps Lock と左 Control キーを交換するには、{{ic|XkbOptions}} に {{ic|ctrl:swapcaps}} を追加してください。次のコマンドを実行することで似たようなオプションとその説明を表示できます: |
||
− | [[Wikipedia:Compose key|コンポーズキー]]を押して他のキーを押すと、ユニコード文字が打ち込まれます。例えば、多くの設定では {{ic|''compose_key'' ' e}} を押すことで {{ic|é}} が作られます。キーボードレイアウトとは異なる言語を入力する必要があるときに有用です (英語キーボードでフランス語・イタリア語・ドイツ語を入力する場合など)。 |
||
+ | $ grep -E "(ctrl|caps):" /usr/share/X11/xkb/rules/base.lst |
||
− | 例えば、右の {{ic|Alt}} キーをコンポーズキーにしたいのなら、{{ic|XkbOptions}} に {{ic|compose:ralt}} を指定してください。 |
||
+ | === マウスキーを有効にする === |
||
− | 他のキーをコンポーズキーにすることもできます。{{ic|/usr/share/X11/xkb/rules/base.lst}} 内の {{ic|compose:}} で始まっているのがそうです。利用できるオプションの完全な一覧を表示するには、次のコマンドを実行してください: |
||
+ | 現在、[[Wikipedia:ja:マウスキー|マウスキー]] (マウスに付いているキーのことではありません) はデフォルトで無効にされているので {{ic|keypad:pointerkeys}} を {{ic|XkbOptions}} に加えて手動で有効にする必要があります。{{ic|Shift+NumLock}} ショートカットによってマウスキーの切り替えが行えます。 |
||
− | $ grep "compose:" /usr/share/X11/xkb/rules/base.lst |
||
+ | 高度な設定については [[X keyboard extension#マウスの操作]] も参照してください。 |
||
− | ==== キーの組み合わせ ==== |
||
+ | === AltGr の設定 === |
||
− | コンポーズキーのデフォルトのコンビネーションは {{ic|/usr/share/X11/locale/''used_locale''/Compose}} に保存されているロケールによります。{{ic|''used_locale''}} は例えば {{ic|en_US.UTF-8}} になります。 |
||
+ | AltGr([[Wikipedia:AltGr key#History|Alternate Graphic]])キーは、キーボード上の追加の文字や記号にアクセスするために使用できます。Shift キーと同様に修飾キーとして機能しますが、キーの第 3 レベルのマッピングにアクセスすることができます。マッピングレベルは以下のように機能します: |
||
− | デフォルトのファイルを {{ic|~/.XCompose}} にコピーして編集することでコンポーズキーの組み合わせを定義することが可能です。コンポーズキーは数千のユニコード文字全てで動作し、基本多言語面にない文字も含みます。 |
||
+ | * 1st Level: デフォルトのキー層(修飾キーなし)。 |
||
− | ただし、GTK はデフォルトで [[Wikipedia:ja:XIM|XIM]] を使わないので {{ic|~/.XCompose}} に設定したキーが使えません。この問題は {{ic|~/.xprofile}} に {{ic|1=export GTK_IM_MODULE=xim}} や {{ic|1=export XMODIFIERS="@im=none"}} を追加して GTK に XIM を使わせることで修正できます。 |
||
+ | * 2nd Level: Shift キーを押すことでアクセスでき、二次的な文字(例: 大文字化)や記号(例: @ 記号)を提供します。 |
||
+ | * 3rd Level: AltGr キーを押すことでアクセスでき、第 1 レベルおよび第 2 レベルでは利用できない追加の文字や記号にアクセスできます。 |
||
+ | 2nd レベルの文字は通常、キーボードのキーに印刷されており、見つけるのは簡単です。一方、追加レベルの文字を確認するには、{{ic|xmodmap -pk}} を使用するか、{{ic|/usr/share/X11/xkb/symbols}} にあるキーボードマッピングを参照することができます。 |
||
− | {{Tip|XIM はとても古く、他の入力メソッドの方がうまくいくかもしれません: [[Smart Common Input Method platform|SCIM]], [[Uim を使って日本語を入力|uim]], [[IBus]] など。詳しくは[[国際化#Xorg での入力]]を見て下さい。}} |
||
− | === |
+ | === コンポーズキーの設定 === |
+ | 通常、典型的なキーボードにはコンポーズキーなんて存在しませんが、既存のキーを[[Wikipedia:Compose key|コンポーズキー]]として設定することができます。 |
||
− | ほとんどのヨーロッパ言語キーボードでは {{ic|5}} キーの上にユーロ記号 (€) が印字されています。{{ic|ALT}}+{{ic|5}} などでユーロを打てるようにするには、{{ic|lv3:lalt_switch}} や {{ic|eurosign:5}} オプションを使って下さい。 |
||
+ | まず {{ic|Compose}} キーを押し、その後に追加のキー (通常は2つ) を押します。典型的な用途としては、キーボードの言語以外の文字を入力するためや、{{ic|AltGr}} 修飾キーでは入力できないあまり使用されない文字を入力するためなどがあります。例えば、{{ic|Compose}} {{ic|'}} {{ic|e}} を押すと {{ic|é}} になり、{{ic|Compose}} {{ic|-}} {{ic|-}} {{ic|-}} を押すと "エムダッシュ" {{ic|—}} になります。 |
||
− | ルピー記号 (₹) は同じように {{ic|rupeesign:4}} で使うことができます。 |
||
+ | いくつかの風変わりなキーボードには {{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}} で定義されています: |
||
− | === Switching state immediately when Caps Lock is pressed === |
||
+ | $ grep "compose:" /usr/share/X11/xkb/rules/base.lst |
||
− | Those who prefer typing capital letters with the Caps Lock key may experience a short delay when Caps Lock state is switched, resulting in two or more capital letters (e.g. ''THe'', ''ARch LInux''). This occurs because Caps Lock is enabled immediately once the Caps Lock key is pressed, but is only disabled upon release of the second key-press. This behaviour [[Wikipedia:Caps_lock#History|stems from typewriters]] where a Caps Lock function was achieved by physically locking the shifted typebars in place, and the release of a shift key-press was the action that caused the release of the lock. |
||
+ | 欲しいキーマッピングがこのファイルにない場合、[[xmodmap]] を使ってキーを {{ic|Multi_key}} keysym にマップすることもできます。{{ic|Multi_key}} keysym はデフォルトでコンポーズキーとして機能します (''xmodmap'' の設定は ''setxkbmap'' によってリセットされることに注意してください)。 |
||
− | Some more popular operating systems have removed this behaviour, either voluntarily (as it can be confusing to some) or by mistake, however this is a question of preference. Bug reports have been filed on the Xserver bug tracker, as there is currently no easy way to switch to the behaviour reflected by those other operating systems. For anyone who would like to follow up the issue, bug reports and latest working progress can be found at [https://bugs.freedesktop.org/show_bug.cgi?id=27903] and [https://gitlab.freedesktop.org/xorg/xserver/issues/312]. |
||
− | ==== |
+ | ==== キーの組み合わせ ==== |
+ | コンポーズキーのデフォルトの組み合わせは {{ic|/usr/share/X11/locale/''used_locale''/Compose}} ({{ic|''used_locale''}} は {{ic|en_US.UTF-8}} などです) に保存されている[[ロケール]]によります。 |
||
− | First, export your keyboard configurations to a file: |
||
+ | 先のデフォルトのファイルを {{ic|~/.XCompose}} にコピーして、独自のコンポーズキーの組み合わせを定義することができます。または、空の {{ic|~/.XCompose}} を作成し、{{ic|include "%L"}} を使ってデフォルトのファイルをインクルードすることもできます。例えば: |
||
− | $ xkbcomp -xkb $DISPLAY xkbmap |
||
+ | {{hc|~/.XCompose|<nowiki> |
||
− | In the file ''xkbmap'', locate the Caps Lock section which begins with ''key <CAPS>'': |
||
+ | include "%L" |
||
+ | <Multi_key> <g> <a> : "α" |
||
− | key <CAPS> { [ Caps_Lock ] }; |
||
+ | <Multi_key> <g> <b> : "β" |
||
+ | <Multi_key> <g> <g> : "γ" |
||
+ | </nowiki>}} |
||
+ | コンポーズキー ({{ic|~/.XCompose}} 内では {{ic|<Multi_key>}} と表記しています) は、数千もの有効な Unicode 文字のどれでも機能します (基本多言語面外のものも含む)。{{man|5|Compose}} を見てください。XCompose ファイルの形式について説明されています。 |
||
− | and replace whole section with the following code: |
||
+ | ただし、GTK はデフォルトで [[Wikipedia:ja:XIM|XIM]] を使わないので {{ic|~/.XCompose}} に設定したキーが使えません。この問題は、[[環境変数#グラフィック環境|グラフィカル環境の変数]] {{ic|1=GTK_IM_MODULE=xim}} や {{ic|1=XMODIFIERS="@im=none"}} の両方/片方を設定して GTK に XIM の使用を強制することで修正できます。 |
||
− | 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)] |
||
− | }; |
||
+ | {{Tip|XIM はとても古く、[[IBus]] や [[Fcitx5]] などの他の入力メソッドの方がうまくいくかもしれません。詳細は [[インプットメソッド]] を参照してください。}} |
||
− | Save and reload keyboard configurations: |
||
+ | {{Note|XIM では {{ic|Ctrl+Shift+u}} の組み合わせで Unicode 文字の挿入ができません。}} |
||
− | $ xkbcomp -w 0 xkbmap $DISPLAY |
||
+ | === 他のキーで通貨記号を入力する === |
||
− | Consider making it a service launching after X starts, since reloaded configurations do not survive a system reboot. |
||
+ | ほとんどのヨーロッパ言語キーボードでは {{ic|5}} キーにユーロ記号 (€) が印字されています。{{ic|Alt+5}} などでユーロを打てるようにするには、{{ic|lv3:lalt_switch}} と {{ic|eurosign:5}} オプションを使って下さい。 |
||
− | == 他の設定 == |
||
+ | |||
+ | ルピー記号 (₹) は同じように {{ic|rupeesign:4}} で使うことができます。 |
||
=== 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] で見られます。 |
==== 解決方法 ==== |
==== 解決方法 ==== |
||
244行目: | 254行目: | ||
リロードした設定は再起動すると消えてしまうため、X の起動時に上記のコマンドを自動的に実行させるようにしても良いでしょう。 |
リロードした設定は再起動すると消えてしまうため、X の起動時に上記のコマンドを自動的に実行させるようにしても良いでしょう。 |
||
− | + | == ワンクリックキーの機能 == |
|
+ | {{pkg|xcape}} を使用することで、追加のワンクリック機能を修飾キーに割り当てることができます。例えば、{{ic|CapsLock}} を、1回だけ押した場合は {{ic|Escape}} として、他のキーと一緒に使った場合は {{ic|Control}} として機能させることができます。まず、上で説明したように [[#Caps Lock と左 Control を交換する|setxkbmap]] を使って {{ic|Control}} の交換を設定し、そして ''xcape'' を使って {{ic|Escape}} の関連付けを設定してください: |
||
− | ''typematic delay'' はキーリピートを始めるのにキーを押し続ける必要がある時間 (ミリ秒) を表します。キーリピートが開始されると、''typematic rate'' によって指定された頻度 (Hz) で文字が繰り返されます。これらの値は ''xset'' コマンドを使うことで変更できます: |
||
+ | |||
+ | $ xcape -e 'Caps_Lock=Escape' |
||
+ | |||
+ | 複数の関連付けをセミコロンで区切って設定することもできます。例えば: {{ic|1=Caps_Lock=Escape;Shift_L=Escape}} |
||
+ | |||
+ | タイムアウト (デフォルトでは 500 ms) よりも長くキーを押すと、''xcape'' はキーイベントを生成しません。 |
||
+ | |||
+ | == オートリピートの遅延と速度の調整 == |
||
+ | |||
+ | ''オートリピート遅延'' (タイプマチック遅延とも) はキーリピートを始めるのにキーを押し続ける必要がある時間 (典型的にはミリ秒) を表します。キーリピートが開始されると、''オートリピート速度'' (タイプマチック速度とも) によって指定された頻度 (通常 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 を使う === |
||
+ | |||
+ | {{AUR|xautocfg}} は、新しく接続されたデバイスに対して自動的にリピート速度の設定を適用することができます。このツールは X11 のイベントを監視し、新しいキーボードが接続された際にリピート速度の設定をそのキーボードに適用します。 |
||
+ | |||
+ | * 設定を調節してください。 |
||
+ | * {{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| |
||
+ | Section "InputClass" |
||
+ | ... |
||
+ | Option "AutoRepeat" "200 40" |
||
+ | ... |
||
+ | 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 でアーカイブ済み)