てけとーぶろぐ。

ソフトウェアの開発と、お絵かきと、雑記と。

Ubuntuで左右のAltキーを使ってIMEをON/OFFする

日本語キーボードで無変換キーにIMEのOFF、変換キーにIMEのONを割り当てることに慣れた人が英語キーボードに移行すると、 無変換キー、変換キーの代わりに左右のAltキーにIMEのON/OFFを割り当てたくなるわけです。

Windowsではalt-ime-ahk等のアプリで実現できます。ではUbuntuだとどうするのか?という話です。

自分が他のサイトで見かけたのはFcitxの設定でできるというものでした。

確かにFcitxでは設定で左右のAltキーにIMEのON/OFFを割り当てることができます。 しかし、これを試したところ、例えばすでにIMEがOFFになっている状態で再度左Altキーを押すと、ただ左Altキーを押したのと同じことになって、多くのアプリではメニューにフォーカスが移ってしまうようでした。 試した環境は Ubuntu 22.10 + Fcitx 4 です。 Fcitx 5 も試しましたがこちらはIMEの状態に関わらずAltキーを押したのと同じことになるようでした。

それが仕様でもおかしくない動きですけど、 こちらとしては、例えばIMEがOFFのときに再度余計にIME OFFのキーを押してしまっても問題ない、という動きを期待しているので都合がわるいです。

そこで必要となるのはAltキーは空打ちの場合IMEのON/OFFのみ行い、Altキーとして働かなくすることです。 alt-ime-ahkもそんな作りですね。

ということで自分が見つけた実現方法を説明します。 Input Remapperというアプリを使います。

まずFcitxの設定で「無変換」キーにIMEのOFF、「変換」キーにIMEのONを割り当てます。
Fcitx 4 であれば Configure → Global Configタブ → Show Advanced Optionsにチェック
Activate input method に 変換キーを設定(Henkanmode と表示される)
Inactivate input method に 無変換キーを設定(Muhenkan と表示される)
変換キー、無変換キーを設定するために一時的に日本語キーボードをつなぐ必要がありますね。

次にInput Remapperをインストールします。

$ sudo apt install input-remapper

インストールしたらInput Remapperを起動します。 Deviceを設定したいキーボードにしてから

「Change Key」ボタンをクリックしたら、左Altキーを押します。 「Change Key」ボタン下の入力欄にフォーカスが移るのでそこに

if_single(key(KEY_MUHENKAN), hold(KEY_LEFTALT))

と入力します。

「Change Key」ボタンをクリックしたら、右Altキーを押します。 「Change Key」ボタン下の入力欄にフォーカスが移るのでそこに

if_single(key(KEY_HENKAN), hold(KEY_RIGHTALT))

と入力します。

そして「Apply」をクリックします。 次回のOS起動時にもこの設定を有効にしたい場合は「Autoload」をONにします。

「if_single…」の書き方は以下を参考にしました。

https://github.com/sezanzeb/input-remapper/issues/287

これで気兼ねなく左右のAltキーを叩いてIMEをON/OFFできます。