最終目標
私は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_cy
us
localectl set-keymap sr_cy
次は私です心配するその後すぐに:
- これはエレガントな解決策ではありません。
- 他のレイアウトを切り替えることはできません。毎回コマンドを実行し、必要なレイアウトを指定する必要があります。
- ログアウトした後、またはシステムを再起動した後も、この変更は完全に維持されますか?答えが「はい」の場合、問題が発生する可能性があります。 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-8
sr_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が同じ構成を使用していないことを知っていますが、これが設定に簡単に変換できると思います。