XKBで自前のレイアウトをちゃんと選択出来るようにする
以下の方法がPop! OS 22.04で有効なことを確認済み
ホーム以下に.xkb/symbolなどを作ってxkbcompやsetxkbmapで読み込む方法で自前のレイアウトにカスタムしていたが、
スリープ復帰時にリセットされる(対処しているものの、稀に発生)
特に何したか見に覚えがないタイミングでリセットされる(わかんないけど、稀に発生)
外付けキーボードを抜き差ししたタイミングでリセットされる(毎回、確実に発生)
が起きる。上2つは稀だったため目を瞑って開発に勤しんできたが、Ergodoxを購入して使うようになったため、Ergodoxを抜き差ししたり、Ergodoxのリセットを行うたびにPop! OS側のレイアウトがリセットされてしまうため、さすがに耐えられなかった。
そこで、重い腰を上げ、こちらの記事を参考に、キーボード設定で自前のレイアウトを表示させ、選択できるようにした。 まず、/usr/share/X11/xkb/symbols/jpの// EXTRAS:の前に、以下を追加。
code:/usr/share/X11/xkb/symbols/jp
partial alphanumeric_keys modifier_keys
xkb_symbols "pdk" {
namegroup1 = "Japanese (Pinkyless Dvorak)"; key <AE02> {
};
key <AE06> {
};
key <AE07> {
};
key <AE08> {
};
key <AE09> {
};
key <AE10> {
};
key <AE11> {
};
key <AE12> {
};
key <AD01> {
type= "ALPHABETIC",
};
key <AD02> {
type= "ALPHABETIC",
};
key <AD03> {
type= "ALPHABETIC",
};
key <AD04> {
type= "ALPHABETIC",
};
key <AD05> {
type= "ALPHABETIC",
};
key <AD06> {
type= "ALPHABETIC",
};
key <AD07> {
type= "ALPHABETIC",
};
key <AD08> {
type= "ALPHABETIC",
};
key <AD09> {
type= "ALPHABETIC",
};
key <AD10> {
type= "ALPHABETIC",
};
key <AD11> {
};
key <AD12> {
};
key <AC01> {
type= "ALPHABETIC",
};
key <AC02> {
type= "ALPHABETIC",
};
key <AC03> {
type= "ALPHABETIC",
};
key <AC04> {
type= "ALPHABETIC",
};
key <AC05> {
type= "ALPHABETIC",
};
key <AC06> {
type= "ALPHABETIC",
};
key <AC07> {
type= "ALPHABETIC",
};
key <AC08> {
type= "ALPHABETIC",
};
key <AC09> {
type= "ALPHABETIC",
};
key <AC10> {
};
key <AC11> {
};
key <TLDE> {
};
key <AB01> {
type= "ALPHABETIC",
};
key <AB02> {
type= "ALPHABETIC",
};
key <AB03> {
type= "ALPHABETIC",
};
key <AB04> {
type= "ALPHABETIC",
};
key <AB05> {
type= "ALPHABETIC",
};
key <AB06> {
type= "ALPHABETIC",
};
key <AB07> {
type= "ALPHABETIC",
};
modifier_map Lock { <LCTL> };
modifier_map Shift { <LFSH> };
modifier_map Shift { <RTSH> };
modifier_map Shift { <AB11> };
modifier_map Mod1 { <LALT> };
modifier_map Control { <CAPS> };
modifier_map Mod2 { <NMLK> };
modifier_map Mod5 { <LVL3> };
modifier_map Control { <RCTL> };
modifier_map Mod1 { <RALT> };
modifier_map Mod4 { <LWIN> };
modifier_map Mod4 { <RWIN> };
modifier_map Mod5 { <MDSW> };
modifier_map Mod1 { <META> };
modifier_map Mod4 { <SUPR> };
modifier_map Mod4 { <BKSL> };
modifier_map Mod4 { <HYPR> };
};
次に、/usr/share/X11/xkb/rulesのbase.lst(559行目付近)とevdev.lst(559行目付近)に以下を追加。
code:/usr/share/X11/xkb/rules/base.lst
dvorak jp: Japanese (Dvorak)
pdk jp: Japanese (Pinkyless Dvorak) <--新たに追加
phonetic kg: Kyrgyz (phonetic)
そんでもって、/usr/share/X11/xkb/rulesのbase.xmlとevdev.xmlのに以下を追加。
code:/usr/share/Xll/xkb/rules/base.xml
<layoutList>
<layout>
<configItem>
<name>us</name>
... (省略)
</configItem>
<variantList>
...... (省略)
<variant>
<configItem>
<name>dvp</name>
<description>English (programmer Dvorak)</description>
</configItem>
</variant>
<variant> <!-- こっから新たに追加 -->
<configItem>
<name>pdk</name>
<description>English (Pinkyless Dvorak)</description>
</configItem>
</variant>
...... (省略)
</layout>
<layout>
<configItem>
<name>jp</name>
... (省略)
</configItem>
<variantList>
...... (省略)
<variant> <!-- こっから新たに追加 -->
<configItem>
<name>dvorak</name>
<description>Japanese (Dvorak)</description>
</configItem>
</variant>
<variant>
<configItem>
<name>pdk</name>
<description>Japanese (Pinkyless Dvorak)</description>
</configItem>
</variant>
</variantList>
</layout>
...... (省略)
で、再起動する。その後、Keyboard設定を開いて入力ソースを追加すると、リストに
https://gyazo.com/ce3fff373bbc74a2c06f50ab8f9e1dce
こんな感じで現れる。ただし、このままだと「変換」、「無変換」キーがinet(evdev)の設定で書き換わってしまうので/usr/share/X11/xkb/symbols/inetを
code:/usr/share/X11/xkb/symbols/inet
// Commented out because HZTG has same keycode as TLDE
// key <HENK> { Henkan }; <-- ここコメントアウト // key <MUHE> { Muhenkan }; <-- ここコメントアウト とする。