
私は、
setxkbmap xxx
Xサーバでキーボードレイアウトを変更することができます。ログアウト/再起動すると無効になるので、$HOME/.profile
ログイン時に利用できるように次の行を追加します。この質問説明します。
しかし、これを実行すると、ログインする前にキーボード レイアウトがまだ利用できません。この段階で使用したい場合は、どうすればよいでしょうか? Centos7 で GDM を使用しています。
私が試したこと:
という新しいキーボードレイアウトを定義し
symmetri
、 の下に置きます/usr/share/X11/xkb/symbols/
。テストするには、ダウンロードしてください。ここ。注: X11 サーバーのレイアウトのみを定義しており、仮想コンソールのレイアウトはまだ定義していません。locatectl list-keymaps
たぶんそれが、 やloadkeys
や に触れずにリストアップできない理由です/etc/vconsole.conf
。setxkbmap symmetri
/etc/profile.d/symmetri.sh
使用します。変更が適用されました。ユーザー プロファイルで使用するために入力します。ログアウトしてログインしようとすると、動作が停止し、QWERTY が表示されます。
私は QWERTY でログインし、ログインが成功するとスクリプトがソース化されるため、現在は Symmetri を使用しています。
us
ターミナルを開き、に切り替えますsetxkbmap us
。
その後、
localectl set-x11-keymap symmetri
今回はレイアウトは切り替わりませlocalectl set-keymap symmetri
ん。
答え1
答え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 では の下、/usr/share/
Ubuntu <= 8.08 では の下です/etc/
。1奇妙ですね。)
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 />
。
注: iso639Id
ISO 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.xml
6.およびにも同じことを行うことができますbase.lst
が、私は最初にこれを実行しましたが、機能しません。
7. キーボードレイアウトを次のように設定します。
setxkbmap symmetri
または、バリアントを設定するには、次を使用します。
setxkbmap symmetri -variant non-prog
localectl
list-x11-keymap-layouts
および は可能ですlist-x11-keymap-variants
が、 ではバリアントを設定することはできません。 のみsetxkbmap
可能です。
この設定により、再起動後、初回ログイン前、新しいキーボードレイアウトが完成しました(ただし、バリアントは保持されません。基本レイアウトのみが保持されます。) しかし、ログインに成功するとデスクトップマネージャーが引き継ぎ、$HOME/.bashrc
/ $HOME/.profile
(単一ユーザー用)/ /etc/profile.d/xxx.sh
/ /etc/profile
(全ユーザー用)ファイルで新しいキーボードレイアウトを設定しないと、ないログアウトして再度ログインすると、新しいキーボードレイアウトが表示されます。これらの変更により、のみ最初のログイン成功前は持続します... またはプロファイル スクリプトを使用して、X サーバーに「ログイン前だけでなく、ログイン後にもすべてのユーザーに対してこれを希望します」と伝える必要があり.bashrc
ます。注意: この変更により、ログアウトしてユーザーを変更した場合でも、レイアウトは変更されたレイアウトになり、 にはなりませんqwerty(us)
。
本当にイライラします...もっと簡単な方法があるはずですが、見つけることができません。
参考文献:(必読)