ルートアクセスなしでX11でカスタムキーボードレイアウトを設定する手順は何ですか?私はこれが可能であることを知っています。この回答しかし、Error loading new keyboard description
新しいレイアウトを使用しようとするたびに問題が発生します。
.config
次のディレクトリを作成しましたxkb
。
xkb/
rules/
evdev-local
evdev-local.lst
evdev-local.xml
symbols/
my-us
私が追加したセクションevdev-local.xml
で<layoutList>
<layout>
<configItem>
<name>my-us</name>
<shortDescription>my-us</shortDescription>
<description>English (My US)</description>
<languageList>
<iso639Id>eng</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>mdvp</name>
<description>English (Modified Programmer Dvorak)</description>
</configItem>
</variant>
</variantList>
</layout>
そしてsymbols/my-us
ファイルは
partial alphanumeric_keys
xkb_symbols "mdvp" {
include "us(dvp)"
name[Group1] = "English (Modified Programmer Dvorak)";
// Unmodified Shift AltGr Shift+AltGr
// upper row, left side
key <AD01> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
// lower row, left side
key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
include "level3(ralt_switch)"
};
だから私は走る
setxkbmap -I ~/.config/xkb/ -rules evdev-local -layout my-us
そして得る
新しいキーボード記述の読み込み中にエラーが発生しました。
後ろの話:私はProgrammer's Dvorakを使っていて、それが最も気に入りました。しかし、セミコロンとアポストロフィをUS Dvorakにあった場所に戻したいと思います。それは私のワークフローに適しているからです。
私は見たこのチュートリアルSEで推奨され、私のコンピュータで動作しますが、他の人が自分のコンピュータで作業する必要がある場合は、通常の英語のQWERTYに戻すためにKDEレイアウトスイッチャーウィジェットを使用できる必要があります。
答え1
何らかの理由で-print
出力を次にパイプするとxkbcomp
:
setxkbmap \
-I ~/.config/xkb/ \
-rules evdev-local \
-layout "my-us(mdvp)" \
-print |
xkbcomp -I ~/.config/xkb/ - "$DISPLAY"
私はあなたのレイアウトに問題がないと思います。自分で設定してみましたが、setxkbmap
その-verbose
オプションを使用しても出力は役に立ちません。
Warning! Multiple definitions of rules file
Using command line, ignoring X server
Warning! Multiple definitions of keyboard layout
Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+my-us(mdvp)+inet(evdev)+terminate(ctrl_alt_bksp)
geometry: pc(pc104)
Error loading new keyboard description
これが基本的な詳細レベルです。しかし、10(明らかに最大レベル)に設定しても、上記の内容に加えて「Locale is C」が出力され、ルールファイルの場所を見つけようとします。キーボードの説明を読み込めない理由に関する情報は出力しません。
xkbcomp
私がパイプを使用するよりもパイプを好む理由の1つsetxkbmap
は、電子がより良いエラーメッセージを提供するようだからです。