mozcの起動時の入力モードを直接入力にしてインストールする

追記 (2021-12-28)

最近のmozcは起動時の入力モードがデフォルトで直接入力になったみたい。

github.com

2021年12月26日にAURのmozcがアップデートされたから勢いでアップデートかけたんだけと、ibus-mozcの新しいバージョンと依存しているようで、すでにibus-mozcがインストールされているとインストールできない。なので、一旦mozcとibus-mozcをアンインストールして、新しいバージョンのmozcとibus-mozcを再インストールしてみたらうまく行った。

$ yay -R mozc ibus-mozc # 一旦アンインストール
$ yay -S mozc ibus-mozc # 新しいバージョンをインストール

以前の記事でもmozcの起動時の入力モードを直接入力にしていると書いたが、xdotoolはもちろんx11でしか使えない。なのでwaylandで起動してしまうと、以前の記事のようには入力モードを切り替えられないのが問題だった。

数日前にgdmがgdm-41.0.1-x86_64へアップデートされたが、起動時のセッションがx11を選択しているはずなのにwaylandになってしまうことが多発した。ここで上に書いた問題が発生してしまい、起動時の文字入力が不便に立ってしまった。幸いにもgdm-40.1-2-x86_64のキャッシュがあったのでsudo pacman -U /var/cache/pacman/pkg/gdm-40.1-2-x86_64.pkg.tar.zstでダウングレードし、/etc/pacman.confにIgnorePkg = gdmを追記してことなきを得たが、次回のアップデート以降にも同じ問題が起こらないとは限らない。そのために、xdotoolに頼らない方法でmozcの起動時の入力モードを直接入力にできないか調べた。

kActivatedOnLaunch

Is there a way to set hiragana as default? · Issue #381 · google/mozcを見てみると、src/unix/ibus/property_handler.cc内のkActivatedOnLaunchという変数が起動時の入力モードを決定しているようだ。kActivatedOnLaunchがtrueだとひらがな入力で、falseだと直接入力になるようだ。なのでmozcのインストール時にkActivatedOnLaunchをfalseにしてやればいい。

PKGBUILDをいじる

普通にaurからインストールするとkActivatedOnLaunchがtrueになってしまうので、インストール時の処理にsrc/unix/ibus/property_handler.ccのconst bool kActivatedOnLaunch = true;const bool kActivatedOnLaunch = false;に変える処理を紛れ込ませれば良い。

まずはPKGBUILDをダウンロードしてくる。

$ mkdir -p src/github.com
$ cd src/github.com
$ yay -G mozc

編集前のPKGBUILDは以下のようになってるはず。

# 省略

build() {
  msg2 '====================================================='
  msg2 '               *** Build Info ***'
  msg2 ' The following package files will be generated:'
  for _p in ${pkgname[@]}
  do  
    msg2 "  * ${_p}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
  done
  msg2 '====================================================='

  PATH="${srcdir}:${PATH}"

  cd "${srcdir}/${pkgbase}/src"

  msg "Starting make..."

# 省略

なので、PKGBUILDを以下のように編集する。

# 省略

build() {
  msg2 '====================================================='
  msg2 '               *** Build Info ***'
  msg2 ' The following package files will be generated:'
  for _p in ${pkgname[@]}
  do  
    msg2 "  * ${_p}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
  done
  msg2 '====================================================='

  PATH="${srcdir}:${PATH}"

  cd "${srcdir}/${pkgbase}/src"

  sed -i -e 's/const\sbool\skActivatedOnLaunch\s=\strue;/const bool kActivatedOnLaunch = false;/g' $(find . -name property_handler.cc)

  msg "Starting make..."

# 省略

編集前と比較すると、cd "${srcdir}/${pkgbase}/src"msg "Starting make..."の間にsed -i -e 's/const\sbool\skActivatedOnLaunch\s=\strue;/const bool kActivatedOnLaunch = false;/g' $(find . -name property_handler.cc)を追記している。こうすることでmozcのビルド前にkActivatedOnLaunchをfalseに変更できる。

編集したらmakepkg -siでインストールする。インストールした後にログアウトなり再起動なりすれば起動時に入力モードが直接入力になっているのが確認できるはずだ。

これでxdotoolに頼らなくても起動時の文字入力がスムーズにできる。

おまけ: IMEを変換キーと無変換キーで有効/無効にする

mozcのキー設定に以下の設定を入れればok

モード 入力キー コマンド
変換前入力中 Henkan IMEを有効化
変換中 Henkan IMEを有効化
直接入力 Henkan IMEを有効化
入力文字なし Henkan IMEを有効化
変換前入力中 Muhenkan IMEを無効化
変換中 Muhenkan IMEを無効化
直接入力 Muhenkan IMEを無効化
入力文字なし Muhenkan IMEを無効化

参考