キーボードレイアウトの切り替え

キーボードレイアウトの切り替え

最終目標

私はArch Linuxをbspwmウィンドウマネージャとsxhkdショートカットデーモンとして使用します。私のアプリケーションで特定のキーの組み合わせをマッピングしたいと思います。山西香港開発研究センターさまざまなキーボードレイアウトで混ざります。たとえば、

# Shuffle through keyboard layouts
super + e
    *action to be executed*

ロケール

まず、セルビア語のキーボードレイアウトのみ(時々)有効にしたいので、セルビア語のロケールを追加する必要があるかどうかわかりません。私の考えでは、キーマッピングで十分だと思います。もしそうなら、セルビア語のロケールを生成したので、これを実行すると、localectl list-local出力は次のようになります。

en_US.UTF-8
sr_RS.UTF-8
sr_RS.UTF-8@latin

これはそれぞれ次のとおりです。

  • アメリカ英語ロケール – UTF-8エンコーディング
  • セルビアのセルビア語ロケール – キリル文字 – UTF-8エンコーディング
  • セルビア用セルビア語ロケール – ラテンスクリプト – UTF-8エンコーディング

キーマップ

私が使用したい3つのレイアウト(シャッフル機能を含む)は次のとおりです。

  • us=アメリカン英語
  • sr-cy=キリルセルビア語
  • sr-latin=ラテンセルビア語

代わりに編集/etc/vconsole.confして設定するか。KEYMAP=sr_cyuslocalectl set-keymap sr_cy

次は私です心配するその後すぐに:

  1. これはエレガントな解決策ではありません。
  2. 他のレイアウトを切り替えることはできません。毎回コマンドを実行し、必要なレイアウトを指定する必要があります。
  3. ログアウトした後、またはシステムを再起動した後も、この変更は完全に維持されますか?答えが「はい」の場合、問題が発生する可能性があります。 LUKS暗号化でLVMを使用しており、ディスクを復号化するにはusレイアウトが必要です。したがって、再起動する前にキリル文字に切り替えることを忘れてしまうと、永遠に別れになります。

質問

/etc/vconsole.conf複数のキーマップを追加してusデフォルト値に設定する方法はありますか?それでは、2つを切り替えるにはどうすればよいですか?これは単純なコマンドですか、それとも小さなスクリプトが必要ですか?これがオプションでない場合、最終目標を達成するための最良の方法は何ですか?

複数のキーマップを持つ回答を見つけようとしましたが、私の問題に適用されるものが見つかりませんでした。特に私の知識を向上させるソリューションや意見や提案に感謝します。よろしくお願いします!

ベストアンサー1

setxkbmapコマンドで設定したものとは異なるレイアウト名が実際に必要なため、「新しいキーボード記述の読み込み中にエラーが発生しました」というメッセージが表示されます。

を実行すると、localectl list-keymaps | grep sr次のようになります。 sr-cyそして予想通りsr-latin

実行すると、期待localectl list-locales | grep srされる結果も得られます。sr_RS.UTF-8sr_RS.UTF-8@latin

ただし、localectl list-x11-keymap-layouts| grep sr何も返されず、代わりに他の2文字の省略形を使用する必要があります。localectl list-x11-keymap-layouts| grep rsこれはrs、X11で使用するセルビア語のキーボードレイアウトを返します。

したがって、Cyrillic実際に使用する必要がある場合、デフォルトはsetxkbmap rsキリル文字のレイアウトです。

レイアウトを有効にするには、Latinセルビア語のキーボードレイアウトがデフォルトのレイアウトではないため、このバリエーションを特に有効にする必要があります。setxkbmap -layout rs -variant latin

私はこのコマンドを直接使用しますsetxkbmap -layout rs,rs,de,us -variant latin,,,dvp -option 'grp:alt_shift_toggle'。これは次のことを行います。

  • 次へ追加セルビアレイアウトを自分のデフォルトに設定し、ラテン語その変形
  • 次へ追加セルビアレイアウトとデフォルト値(キリル文字)
  • 次へ追加ドイツ人基本レイアウト
  • 次へ追加私たちレイアウトと設定ドヴォルザークプログラマーレイアウト
  • Alt+Shiftキーの組み合わせを使用してレイアウトを切り替えるオプションが追加されました。

同じ順序で設定する必要があります。バリアントに何も設定されていない場合(カンマの後に何も設定されていないことを意味します)、その言語のデフォルト値が使用されます-layout-variant

このロケールを有効にし/etc/locale.genてbuildコマンドを使用しましたsudo locale-gen

localectl を使用してリストすると、次のようになります。

localectl list-locales
C.UTF-8
de_DE.UTF-8
en_DK.UTF-8
en_US.UTF-8
sr_RS.UTF-8
sr_RS.UTF-8@latin

私のデフォルトのlocalectlは次のとおりです。

localectl status
System Locale: LANG=en_US.UTF-8
               LC_NUMERIC=sr_RS@latin
               LC_TIME=sr_RS@latin
               LC_MONETARY=sr_RS@latin
               LC_PAPER=sr_RS@latin
               LC_NAME=sr_RS@latin
               LC_ADDRESS=sr_RS@latin
               LC_TELEPHONE=sr_RS@latin
               LC_MEASUREMENT=sr_RS@latin
               LC_IDENTIFICATION=sr_RS@latin
    VC Keymap: sr-latin
   X11 Layout: rs,latin

私はArch LinuxとI3をタイリングマネージャとして使用しています。~/.config/i3/config

exec --no-startup-id sleep 6 && setxkbmap -layout rs,rs,us,de -variant latin,,dvp, -option 'grp:alt_shift_toggle'

簡単なキーの組み合わせでレイアウトをロードし、レイアウト切り替えを有効にします。

私も持っている

exec --no-startup-id gxkb

現在のキーボードレイアウトを表すアイコンをi3blocksバーに追加します。

OPが同じ構成を使用していないことを知っていますが、これが設定に簡単に変換できると思います。

おすすめ記事