左/右と組み合わせてキーコードHome / Endを生成するために「Super」キーをどのようにマッピングできますか?
私の現在のsetxkbmap:
setxkbmap \
-model pc105 \
-layout 'us(dvorak-intl),us(alt-intl)' \
-option \
-option grp:lctrl_lshift_toggle \
-option compose:rwin
答え1
必要な操作を実行するためのデフォルトオプションがないため、setkxbmapオプションだけではこれを実行できません。
ただし、低レベルで主要な動作を定義することでこれを行うことができます。
このページhttp://madduck.net/docs/extending-xkb/これを理解し、これを行う方法を見つけるのに役立ちます。
~/.xkb/keymap/mykbd ファイルを作成し、ここに setxkbmap の出力を配置します。これはデフォルトのキーボード定義として機能します。
setxkbmap -print > ~/.xkb/keymap/mykbd
次にファイルを作成し、~/.xkb/types/mytypes
次の内容を入れます。
partial
xkb_types "super_level2" {
Virtual_modifiers Super;
type "SUPER_LEVEL2" {
modifiers= Super;
map[Super]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Super";
};
};
キーが押されたときに送信されるシンボルを簡単に定義できるSUPER_LEVEL2タイプを定義しますSuper。
次に、~/.xkb/symbols/mysymbols
次の行を入力します。
partial modifier_keys
xkb_symbols "super_arrows_home_end" {
key <LEFT> {
type[Group1] = "SUPER_LEVEL2",
symbols[Group1] = [ Left, Home ]
};
key <RGHT> {
type[Group1] = "SUPER_LEVEL2",
symbols[Group1] = [ Right, End ]
};
};
(私たちが定義したタイプ「SUPER_LEVEL2」の使用に注意してください。これは、Shiftキーの代わりにSuperキーを押すと、シンボル行で2番目の(レベル2)シンボルがトリガーされることを意味します。
最後に、~/.xkb/keymap/mykbd
ファイルを編集して、私たちが書いたコードスニペットをロードします。
- 行内に引用符を
xkb_types
追加する+mytypes(super_level2)
- 行に引用符を
xkb_symbols
追加します+mysymbols(super_arrows_home_end)
。
これでロードできます。
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
左/右ボタンをテストすると、必要に応じて機能するはずです。