Super+[左|右]を Home/End にマッピング

Super+[左|右]を Home/End にマッピング

左/右と組み合わせてキーコード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

左/右ボタンをテストすると、必要に応じて機能するはずです。

関連情報