🤖
fcitx5-lua でお手軽 vi 協調モード
fcitx5 では fcitx5-lua で lua で fcitx5 の動作を拡張できるようになっています。これを使うといわゆる「vi 協調モード」を簡単に実現することが可能です。
以下が必要な設定ですが、ちゃんと動作させるためには fcitx5-lua の 5.0.3 以降が必要です(執筆時点の最新です)。Arch Linux なら pacman で普通に入ります。
まず、これから作成する addon の定義を書きます。
~/.local/share/fcitx5/addon/hotkey-extension.conf
[Addon]
Name=Hotkey extension
Comment=Hotkey extension
Category=Module
Type=Lua
OnDemand=False
Configurable=False
Library=main.lua
[Addon/Dependencies]
0=luaaddonloader
まあ、だいたいのものはなんでもいいと思います。次にスクリプト本体。
~/.local/share/fcitx5/lua/hotkey-extension/main.lua
local fcitx = require("fcitx")
fcitx.watchEvent(fcitx.EventType.KeyEvent, "handler")
function handler(sym, state, release)
if ((sym == 65307 and state == 0) or (sym == 91 and state == 4)) and
not release
then
fcitx.setCurrentInputMethod("keyboard-us")
end
return false
end
この例では Escape
単押しの場合と Ctrl-[
それぞれの場合に、input method を keyboard-us に変更しつつ、結果としては false を返しています。false を返すと入力がパススルーされるので、結果的に Escape
や Ctrl-[
が入力されると日本語入力モードがオフになった上に、入力したキーそのものは消費されることなく透過します。
keyboard-us
のところは環境によって指定すべきものが違うかもしれませんが、ハンドラ関数内に print(fcitx.currentInputMethod())
とか入れてコマンドラインから fcitx5
を起動すれば何を指定すべきかは表示されると思うので、各自確認してください。
というわけでお手軽 vi 協調モードでした。fcitx5 の lua 拡張はアイデア次第ではいろいろ活用できそうです。
Discussion