xkbキーバインディングを永久に変更しますか?

xkbキーバインディングを永久に変更しますか?

にカスタムキーボードレイアウトがあります/usr/share/X11/xkb/symbols/us。更新されるたびに、ファイルは標準キーボードレイアウトで更新されます。これを恒久的に変更する方法はありますか、それとも展開レベルの設定ではなくユーザー空間でそれを変更する方法はありますか?

カスタムキーボードレイアウトを処理するより良い方法があれば教えてください。私が知っている限り、この問題を解決するための最良の方法はxkbシンボルファイルを使用することですが、これに関するドキュメントはあまりありません。

ありがとうございます。

答え1

つまり、/home/<user>/以下に同じ構造を持つディレクトリツリーを作成します。/usr/share/X11/xkb/

$ tree -L 1
.
├── compat
├── geometry
├── keycodes
├── rules
├── symbols
└── types

したがって、関連ファイルを背中に入れてくださいcompatsymbols明らかに空のディレクトリを作成する必要はなく、必要なファイルを含むディレクトリを作成するだけです。

次に、シンボルファイルusus名前/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のソリューションは私のシステムでは機能しなかったので、他のソリューションを見つける必要がありました。私は次のことをしました。

  1. カスタムキーバインディングを作成しました。
  2. 私が選択した標準キーバインディングとまったく同じ名前を付けました。環境設定(私はManjaroを使用しています)。
  3. 私はホームディレクトリに保存します。
  4. 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
    
  5. このスクリプトは、~/.xinitrcログインプロンプトを表示する前に必要な場合(最も重要な場合は)内部で実行され、標準のキーバインディングをカスタムバージョンに置き換えるため、パスワードを入力する必要があるときにバインディングが有効になります。

答え3

最も簡単な方法は、おそらくカスタムレイアウトを使用して新しいシンボルファイルを作成することです。 usシンボルファイルをコピーしてデフォルトのレイアウトで編集し、同じディレクトリにmilquetoastとして保存します。その後、単にこのシンボルを読み込むことができます。

setxkbmap milquetoast

milquetoastという新しい言語が出ない限り、このファイルはアップデートで上書きされることはありません。

関連情報