fcitx5にてCapsLockでIME切り替えをする

作成日時:

環境

  • OS:Linux(NixOS)
  • WM : Niri(wayland)
  • fcitx5 + mozc
  • US配列

やりたいこと

fcitx5を導入してデフォルト設定のままだとIME切り替えがctrl+spaceとなる。

windows,macでは普段capslockキーでIME切り替えを行っているため、同様にしたい。

結論

  • 物理CapsキーをXKBでMenuキーへ変換
  • fcitx5でMenuを日本語入力切り替えに設定

やったこと

  • fcitx5から切り替えキーをcapslockに割り当てる。

    fcitx5-configtool

    GUIの設定画面でシンプルにそのまま割り当ててみる。

    ⇛ なぜか挙動がおかしくなった。

    確かにcapslockを押せばIME入力ができるようになるのだが、勝手に文字が大文字に固定されて小文字入力が打てなくなったり、左ShiftキーでIMEが切り替わったり、よくわからない挙動をするようになった。

    • 原因

      XKB側のcapslockが有効になっていたため、XKBの大文字固定とfcitx5のIME切り替えが競合してしまっていた。

変更内容

  • XKB側でcapslock物理キーをmenuキーに変換

      keyboard {
          xkb {
              layout "us"
              options "terminate:ctrl_alt_bksp,caps:menu"
          }
      }
  • fcitx5でMenuキーを切り替えに割り当て

      globalOptions = {
        "Hotkey/TriggerKeys" = {
          "0" = "Menu";
          "1" = "Zenkaku_Hankaku";
        };
        "Hotkey/AltTriggerKeys"."0" = "Shift+Shift_R";
      };
  • reboot

雑記

物理キーボード
⇛ Niri(WM)
⇛ XKB
⇛ fcitx5 \

入力操作の距離経路がこのようになっていることを理解した。

ところでMenuキーって何。調べてみたところ、日本語配列のキーボードについている、大体右Ctrlの隣くらいにあるリストみたいな絵柄のキーのことだった。あれMenuキーって言うんだ。