
にカスタムキーボードレイアウトがあります/usr/share/X11/xkb/symbols/us
。更新されるたびに、ファイルは標準キーボードレイアウトで更新されます。これを恒久的に変更する方法はありますか、それとも展開レベルの設定ではなくユーザー空間でそれを変更する方法はありますか?
カスタムキーボードレイアウトを処理するより良い方法があれば教えてください。私が知っている限り、この問題を解決するための最良の方法はxkbシンボルファイルを使用することですが、これに関するドキュメントはあまりありません。
ありがとうございます。
答え1
つまり、/home/<user>/
以下に同じ構造を持つディレクトリツリーを作成します。/usr/share/X11/xkb/
$ tree -L 1
.
├── compat
├── geometry
├── keycodes
├── rules
├── symbols
└── types
したがって、関連ファイルを背中に入れてくださいcompat
。symbols
明らかに空のディレクトリを作成する必要はなく、必要なファイルを含むディレクトリを作成するだけです。
次に、シンボルファイルus
のus
名前/usr/share/X11/xkb/
を/usr/share/X11/xkb/symbols/
。 mine
うまくいきます。
カスタムXkbディレクトリを配置し、/home/<user>/my-xkb
カスタムシンボルファイルの名前をmine
。
設定レイアウトを使用している場合は、setxkbmap(1)
出力を印刷して配管するように変更できますxkbcomp(1)
。setxkbmap
setxkbmap mine
次のように変更する必要があります。
setxkbmap mine -print |
xkbcomp -I"/home/<user>/my-xkb" - "$DISPLAY"
答え2
Guildensternのソリューションは私のシステムでは機能しなかったので、他のソリューションを見つける必要がありました。私は次のことをしました。
- カスタムキーバインディングを作成しました。
- 私が選択した標準キーバインディングとまったく同じ名前を付けました。環境設定(私はManjaroを使用しています)。
- 私はホームディレクトリに保存します。
10-restxkbmap.sh
/etc/X11/xinit/xinitrc.d/
次の内容で名前付きbashスクリプトを作成しました。#!/bin/bash diff -q /home/neo/.config/neo/xkb/symbols/us /usr/share/X11/xkb/symbols/us >/dev/null if [ $? -eq 1 ] then sudo cp /home/neo/.config/neo/xkb/symbols/us /usr/share/X11/xkb/symbols/us fi
- このスクリプトは、
~/.xinitrc
ログインプロンプトを表示する前に必要な場合(最も重要な場合は)内部で実行され、標準のキーバインディングをカスタムバージョンに置き換えるため、パスワードを入力する必要があるときにバインディングが有効になります。
答え3
最も簡単な方法は、おそらくカスタムレイアウトを使用して新しいシンボルファイルを作成することです。 usシンボルファイルをコピーしてデフォルトのレイアウトで編集し、同じディレクトリにmilquetoastとして保存します。その後、単にこのシンボルを読み込むことができます。
setxkbmap milquetoast
milquetoastという新しい言語が出ない限り、このファイルはアップデートで上書きされることはありません。