XFCE で Level3_Shift を Caps Lock に設定し、Compose を Caps Lock+Ctrl に設定するにはどうすればよいですか?

XFCE で Level3_Shift を Caps Lock に設定し、Compose を Caps Lock+Ctrl に設定するにはどうすればよいですか?

私は最近、デフォルトのデスクトップ環境として KDE を使用する SUSE から切り替えました。KDE では、GUI オプションを使用してこのようなセットアップをアーカイブできますが、XFCE ではできません。

~/.Xmodmap次のようにファイルを設定してみました:

clear Lock
clear Control
clear Mod2 
clear Mod5 
keycode  77 = Caps_Lock Num_Lock Caps_Lock Num_Lock
keycode  66 = ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift
keycode  37 = Control_L NoSymbol Control_L NoSymbol Multi_key Multi_key 
add Control = Control_L Control_R
add Lock = Caps_Lock
add Mod2 = Num_Lock
add Mod5 = ISO_Level3_Shift

何が起こるのですか:

  • Caps Lock機能はNum Lock
  • Num Lock機能はShift+Num Lock

起こると予想していたが、起こらなかったこと:

  • Caps LockボタンはISO_Level3_Shift(によると、そうですxevが、なぜか通常の機能を持っていますShift
  • Caps Lock+ 左を押すとCtrl、Compose キーとして機能します (動作しません)。

何が間違っているのでしょうか? Xubuntu 18.04、新規インストール

答え1

3 番目のレベルのシフトを<CAPS>(Caps Lock) にマップし、3 番目のレベルの左コントロールをコンポーズ キー ( Multi_key) として使用します。

setxkbmap -option compose:lctrl-altgr \
    -option lv3:caps_switch \
    -layout "us(intl)"

numlock キーの場合、使用しているレイアウトのラッパーとしてシンボル ファイルを作成できます (ここでは を使用しますus(intl))。 という名前のシンボル ファイルを作成しますcustom

xkb_symbols "basic" {

    // The layout that you want to use.
    include "us(intl)"

    key <NMLK> { [
        Caps_Lock, Num_Lock, Caps_Lock, Num_Lock
    ] };

};

customの構造を反映したディレクトリ ツリーにファイルを保存します/usr/share/X11/xkb。したがって、ディレクトリが に保存されている場合/home/<user>/my-xkb/customファイルは にあるはずです/home/<user>/my-xkb/symbols/custom

(見るここカスタム Xkb ファイルの作成方法と使用方法に関する一般的な手順については、こちらをご覧ください。

単に を使用する代わりに、出力を にパイプするために オプションsetxkbmapを使用する必要があります。 には、カスタム Xkb ディレクトリ ツリーへのパスを指定するために使用する オプションがあります。-printxkbcompxkbcomp-I

setxkbmap -option compose:lctrl-altgr \
    -option lv3:caps_switch \
    -layout "custom" \
    -print |
        xkbcomp -I"/home/<user>/my-xkb" \
            - "$DISPLAY"

関連情報