追加することで
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を使用しています。
ターミナルを開き、setxkbmap us
によってus
に切り替えます。
その後、
localectl set-x11-keymap symmetri
今回はレイアウトを切り替えません。 localectl set-keymap symmetri
どちらでもない。
@terdonあなたの解決策は機能していませんが、私を助けてくれてありがとう、私はもっと学びました。最初はGnomeと関係があるのではないかと思っていましたが、X11だけであることがわかりました。そして@TimBrandrick、あなたのソリューションはほとんどの場合に機能するはずですが、私の場合、キーボードレイアウトを.../X11/xkb/rules/evdev.xml
に追加する前ではありません(そして念のために、.../X11/xkb/rules/evdev.lst
、いくつかのソースによると、lst
ファイルはxml
のコンパイル済みバージョンですが、これらのファイルに依存するすべてのプロセスがxml
ファイルのみを読み取るかどうかは疑わしいため、両方を追加します。実際、xml
には詳細があります。 lst
よりも、しかしlst
の方が理解しやすいです。)
だから、これが私がそれをした方法です:
.../X11/xkb/rules/evdev.xml
を開きます。(ディストリビューションによって異なるため、最初の部分は省略します。CentOS7では/usr/share/
の下にあり、Ubuntu <= 8.08では/etc/
の下にあります。1 奇妙な。 )
<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
には、ISO639-1または639-2標準と互換性のある値が必要です。1 完全な表は、リファレンス1にも記載されています。また、ロケール設定に準拠している必要があります。システム言語としてEnglish(U.S)
を設定したので、ここにus
と入力します。
.../X11/xkb/rules/evdev.lst
を開きます。! layout
の最後に、レイアウトの名前を追加します。お気に入り:symmetri Symmetri layout (CN, EN and ES)
! variant
の最後にそれも追加します。non-prog symmetri: non-programmer
バリアントの名前は、上記のxmlファイルの情報と一致している必要があります。 (私がテストすると、localectl list-x11-keymap-variants
はのみxmlを読み取る代わりにこのファイルを読み取りますが、エラー/バグであるはずです。)
base.xml
とbase.lst
にも同じことができますが、最初に実行したので機能しません。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
(すべてのユーザーの場合)ファイルで新しいキーボードレイアウトを構成しない場合は、notログアウトして再度ログインしたら、新しいキーボードレイアウトを取得してください!!!!したがって、これらの変更はのみ最初のログインが成功する前に持続します... Xサーバーに次のように伝えるには.bashrc
またはプロファイルスクリプトを使用する必要があります。 「」注意:この変更により、ログアウトしてユーザーを変更した場合でも、レイアウトはqwerty(us)
ではなく変更されたものになります。
本当にイライラする....もっと簡単な方法があるはずですが、私はそれを見つけることができません。
参考文献:(必読)
あなたが使用することができます
localectl set-x11-keymap ***
これはコンソールとデスクトップで永続的になります。より詳細な構成はmanページにあります https://www.unix.com/man-page/centos/1/LOCALECTL/