日本語キーボードで無変換キーに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できます。