Sudoアクセスなしでカスタムキーボードレイアウトを使用することは可能ですか?そうであれば、どのように? で説明したように、Sudoアクセスなしでカスタムキーボードレイアウトをインストールしようとしています、そして特定の質問があります現在の答えがうまくいくと言うsetxkbmap
コマンドについて。
具体的には、コマンドの manページ を使用すると、ルールファイルを指定できます。
-rulesfile
要求されたレイアウトとモデルをコンポーネント名のセットに解決するために使用されるルールファイルの名前を指定します。
しかし、どの種類のファイルをそこに置くことを意図しているのか正確には言えず、このオプションの意味を理解するのに苦労しています。
私が理解できる限り、これは/usr/share/X11/xkb/rules/xorg
またはそのエイリアス/usr/share/X11/xkb/rules/base
のいずれかであり、実際に/usr/share/X11/xkb/
のすべてを~/xkb/
にコピーして実行する場合何かのようなもの
setxkbmap -model pc105 -layout "gb" -variant "extd" -rules ~/xkb/rules/base
その後、動作するようです。
ただし、そのファイルを変更する方法はまったくわかりません。 Sudoアクセスがあるマシンでは、 このチュートリアル に従います:xkb/symbols/gb
内にgb
キーボードのバリアントを作成し、xkb/rules/evdev.xml
にバリアントを追加します経由で
<variant>
<configItem>
<name>custom</name>
<description>English (UK, custom)</description>
</configItem>
</variant>
ただし、xkb/rules/base
ファイルには、そのようなバリアントを含める明確な場所はありません。実際、gb
やextd
などの他の関連するintl
キーボードバリアントは、 xkb/rules/evdev.lst
では、どこにも見られません。
それで:-rules
ファイルオプションでファイルを指定すると、独自のバリアントを設定できますか? (残念ながらSudoアクセスなし)
XKBのシステムキーボード設定データベースは/usr/share/X11/xkb
に保存されます。 XKBレイアウトはRMLVO
モデルで定義されます:ルール、モデル、レイアウト、バリアント、オプション。最近使用されている主なルールファイルは、実際にはevdev
です。これはsetxkbmap
で見ることができます:
$ setxkbmap -query -verbose 10
...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules: evdev
model: pc105
layout: us
variant: altgr-intl
options: caps:hyper,compose:menu
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us(altgr-intl)+inet(evdev)+capslock(hyper)+compose(menu)
geometry: pc(pc105)
上記の最後の数行で言及したcomponentsのそれぞれは、/usr/share/X11/xkb
のシステムデータベースのサブディレクトリであり、表示される値はfilenames(+
で区切られた)サブディレクトリにあり、この特定のキーマップを構築するために参照されます。括弧は、指定されたファイル(通常はバリアントとオプション)の特定のclauseを示します。
XKBツール(setxkbmap
、xkbcomp
など)は、ファイルの別の場所を検索する引数を取ることができますが、このカスタムの場所はシステムデータベースと同じ形式でなければなりません。システムデータベースは次のようになります。詳細については、各ディレクトリのREADME
を参照してください。
/usr/share/X11/xkb/
├── compat # ??? dark magic here, avoid
├── geometry # as in physical, eg for generating layout maps
├── keycodes # helpful for translating keycodes (from xev) to <FOO>
├── rules # "evdev" is the important one; *.lst & *.xml are descriptions
├── symbols # main layouts, variants, optional overrides
└── types # ??? dark magic here, avoid
これらのファイルをオーバーライドしたり、システムデータベースにマージせずに独自のレイアウトを提供したりする場合は、独自のファイル用に同様のディレクトリ構造を作成します。独自のキーボードをゼロから構築する場合を除き、おそらくgeometry
またはkeycodes
を使用して何もする必要はないでしょう。
ユーザーごとの構成の場合、$HOME/.xkb/
または$HOME/.config/xkb/
が理想的です。
$HOME/.config/xkb/
...
├── rules
│ ├── evdev-local
│ ├── evdev-local.lst
│ └── evdev-local.xml
├── symbols
│ ├── my-fun-capslock-options
│ ├── my-US-Dvorak-layout
│ └── my-ZWERTY-layout
...
ディレクトリ構造が整ったら、-I /path/to/local/xkb
パラメーターを使用してカスタマイズをロードできます。
setxkbmap -I $HOME/.config/xkb \
-rules evdev-local \
-layout my-ZWERTY-layout \
-option myZWERTY:option1,compose:menu,fun:caps_is_insert
指定されたルールファイルで両方が定義されている限り、fun:caps_is_insert
などのローカルオプションとcompose:menu
などのシステムオプションを組み合わせて使用できます。 (シンボルファイルには他のシンボルファイルを含めることができますが、ルールファイルのインクルード構文は見つかりませんでした。おそらくシステム全体のevdev
ルールをローカルバージョンにコピーし、変更を追加する必要があります。)
localectl
、GNOMEの設定デーモン、またはsetxkbmap
で構成できないWaylandコンポジターなど、他のXKB構成システムでは、カスタムの場所を使用できない場合があります。
リソース: