キー「Super」をマップして、Left/Rightと組み合わせると、キーコードHome/Endが生成されるようにするにはどうすればよいですか?
私の現在のsetxkbmap:
setxkbmap \
-model pc105 \
-layout 'us(dvorak-intl),us(alt-intl)' \
-option \
-option grp:lctrl_lshift_toggle \
-option compose:rwin
デフォルトのオプションがあなたが望むことをしないので、あなたはsetkxbmapオプションだけでそれをすることはできません。
ただし、キーの動作をより低いレベルで定義することでそれを行うことができます。
このページ http://madduck.net/docs/extending-xkb/ は、それを理解し、その方法を見つけるのに役立ちました。
Setxkbmapの出力を配置するファイル〜/ .xkb/keymap/mykbdを作成します。これが基本キーボード定義になります。例えば:
_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キーではなく)スーパーキーを押すと、シンボル行の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
_
左/右のキーをテストします。希望どおりに機能するはずです。