CentOS 7で初めてログインする前にログイン画面のキーボードレイアウトを設定するには?

CentOS 7で初めてログインする前にログイン画面のキーボードレイアウトを設定するには?

追加して実現しました。

setxkbmap xxx

X サーバーでキーボードのレイアウトを変更できます。ログアウト/再起動後も維持されないため、$HOME/.profile以下のようにログイン時に使用できるようにこの行を追加できます。この問題説明する。

ただし、これを行うと、ログインするまでキーボードレイアウトを使用できなくなります。この段階で使用するにはどうすればよいですか? Centos7でGDMを使用しています。

私が試したこと:

  1. 新しいキーボードレイアウトを定義し、名前をとして指定してsymmetriから下に配置します/usr/share/X11/xkb/symbols/。テスト用にダウンロードできます。ここ注:仮想コンソールのレイアウトではなく、X11サーバーのレイアウトのみを定義しました。たぶん私はそれをリストすることはできませんしlocatectl list-keymapsloadkeys触れることもできません/etc/vconsole.conf

  2. setxkbmap symmetriそれを書いてください。変更が適用されました。/etc/profile.d/symmetri.shそれを使用するには、ユーザープロファイルに入れてください。

  3. ログアウトしてログインしようとすると、動作が停止し、QWERTYと表示されます。

  4. QWERTYを使用してログインし、成功したログイン後にスクリプトをインポートするため、Symmetriを使用しています。

  5. 端末を開き、usbyに戻りましたsetxkbmap us

その後、

localectl set-x11-keymap symmetri

今回はレイアウトが変わりませんでした。localectl set-keymap symmetriどちらもありません。

答え1

あなたはそれを使用することができます

localectl set-x11-keymap ***

これはコンソールとデスクトップに完全に適用され、詳細な設定はマニュアルページで確認できます。https://www.unix.com/man-page/centos/1/LOCALECTL/

答え2

@terdon あなたのソリューションは動作しませんでしたが、助けてくれてありがとう。最初はそれがGnomeと関係があるかどうか疑っていましたが、X11にすぎないことがわかりました。 @TimBrandrick、あなたのソリューションはほとんどの場合動作しますが、私の場合はキーボードレイアウトを追加する前ではありません。.../X11/xkb/rules/evdev.xml.../X11/xkb/rules/evdev.lst一部のソースによるとlst、ファイルはコンパイルされたバージョンであるxmlため、すべてのプロセスがこのファイルはxmlファイルを読み取るだけであるため、xml実際にはより多くの情報が含まれていますが、lst理解lstしやすく両方のファイルを追加しました。

それで私がすることは次のとおりです。

1. を開きます.../X11/xkb/rules/evdev.xml

(配布版によって異なるため、最初の部分は省略しました。CentOS 7ではアンダーで、Ubuntu <= 8.08では.1 Strange/usr/share/未満です。)/etc/

2. 子ノードの末尾に<layoutList>次のセクションを追加します。

(必要に応じて修正してください。これは単なるテンプレートです)

<layout>
  <configItem>
    <name>symmetri</name>
    <shortDescription>symmetri</shortDescription>
    <description>Symmetri (CN, EN and ES)</description>
    <languageList>
      <iso639Id>us</iso639Id>
    </languageList>
  </configItem>
  <variantList>
    <variant>
      <configItem>
        <name>non-prog</name>
        <shortDescription>non-prog</shortDescription>
        <description>Symmetri for non-programmer (CN, EN and ES)</description>
        <languageList>
          <iso639Id>us</iso639Id>
        </languageList>
      </configItem>
    </variant>
  </variantList>
</layout>

キーボードレイアウトにバリエーションがない場合、<variantList>セクションは自動的に閉じることができます。例: <variantList />

注:iso639IdISO 639-1または639-2規格と互換性のある値が必要です。1全体の表は参考文献1にも示されています。また、ロケールと一致する必要があります。English(U.S)システム言語に設定されているので、usここに入力してください。

3.保存して開きます.../X11/xkb/rules/evdev.lst

4. 最後に! layoutレイアウト名を追加します。良い:

symmetri        Symmetri layout (CN, EN and ES)

5.キーボードレイアウトにバリエーションがある場合は、! variant最後に追加してください。

non-prog        symmetri: non-programmer

バリアント名はxmlファイルの上記の情報と一致する必要があります。 (試してみるとlocalectl list-x11-keymap-variantsわかりますが、ただXMLを読み込むのではなく、このファイルを読むのはバグ/バグです。 )

base.xml6. andを使用して同じことを実行できますが、base.lst私は最初に行いましたが機能しませんでした。

7. キーボードレイアウト設定:

setxkbmap symmetri

またはバリアントを設定するには、次を使用します。

setxkbmap symmetri -variant non-prog 

localectllist-x11-keymap-layoutsとを使用できますが、list-x11-keymap-variantsバリアントを設定するためにのみ使用することはできませんsetxkbmap

今この設定で再起動後および最初のログイン前、新しいキーボードレイアウト(しかし、このバリエーションは維持されません!必要なのは基本レイアウトだけです!)しかし正常にログインすると、デスクトップ管理者は引き継がれ、$HOME/.bashrc/ $HOME/.profile(シングルユーザー用)/ /etc/profile.d/xxx.sh/(すべてのユーザー用)ファイル/etc/profileで新しいキーボードレイアウトを設定していない場合いいえ新しいキーボードレイアウトを入手するには、ログアウトしてもう一度ログインしてください。 ! ! !したがって、これらの変更はただ最初のログインに成功する前に続行するには、またはプロファイルスクリプトを使用してXサーバーに次のことを知らせる必要があります.bashrc。 「ログイン前だけでなくログイン後でも、すべてのユーザーがこの機能を使用できることを願っています!」ログアウトしてユーザーを変更しても、レイアウトは変更されたレイアウトのままですqwerty(us)

本当に苦しいですね…もっと簡単な方法があるはずなのに見つかりませんね。

参考資料:(必ずお読みください)

  1. http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11

関連情報