ルートなしでキーボードレイアウトをカスタマイズする

ルートなしでキーボードレイアウトをカスタマイズする

ルートアクセスなしで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は、電子がより良いエラーメッセージを提供するようだからです。

関連情報