🖥

Google 日本語入力でカンマ・ピリオドと句読点をショートカットキーで切り替える

2023/09/08に公開

動機

普段 IME に Google 日本語入力を使用しています。メールなどのやり取りや普通の文章を書くときは句読点「、」「。」を使いたいのですが、論文などの学術的な文章を書いているときだけはカンマとピリオド「,」「.」に切り替えたいといったことがしばしば起こります。その都度、Google 日本語入力の GUI から設定を変更するのは面倒なので、ショートカットキーで設定を切り替えられないか試しました。この記事は奮闘した様子の備忘録です。作業環境は MacOS です。

GUIで設定を切り替えるのは面倒

手順のまとめ

  1. シェルスクリプトを用意する
  2. Automator でシェルスクリプトをアプリケーション化する
  3. ショートカットキーを割り当てる

1. シェルスクリプトを用意する

まずは Google 日本語入力の設定ファイルがどこにあるかを確認します。~/Library/Application Support/Google/JapaneseInput 配下にいくつか設定が保存されていそうなファイルがありました。

tree Library/Application\ Support/Google/JapaneseInput/

Library/Application Support/Google/JapaneseInput/
├── boundary.db
├── cform.db
├── config1.db
├── config1.textproto
├── emoji_history.db
├── emoticon_history.db
├── open_db.py
├── segment.db
├── symbol_history.db
└── user_dictionary.db

.db という拡張子ですが、SQLite で開けるというわけではなく、独自フォーマットで構成されているようです。https://github.com/google/mozc/blob/master/docs/configurations.md によると、 GUI で指定可能な設定は config1.db に保存されているようです。

GitHub から config.proto ファイルを持ってきて protoc でコンパイルしてみると、設定をデコードすることができそうです。

brew install protobuf
cd ~/Library/Application\ Support/Google/JapaneseInput
mkdir scripts && cd scripts
curl https://raw.githubusercontent.com/google/mozc/master/src/protocol/config.proto > config.proto
protoc --decode=mozc.config.Config config.proto < ../config1.db > config.textproto

生成された config.textproto の中身を見てみると、14行目に punctuation_method: KUTEN_TOUTEN という記載がありました。試しに GUI 上から、カンマとピリオドに変更してみると、punctuation_method: COMMA_PERIOD に変更されました。設定をショートカットキーから変更するために、まず以下のようなシェルスクリプトを用意しました。

#!/bin/sh

cd ~/Library/"Application Support"/Google/JapaneseInput/scripts
/usr/local/bin/protoc --decode=mozc.config.Config config.proto < ../config1.db > config1.textproto

current_setting=$(grep 'punctuation_method:' config1.textproto | cut -d ' ' -f 2)

if [ "$current_setting" = "KUTEN_TOUTEN" ]; then
    sed -i '' 's/punctuation_method: KUTEN_TOUTEN/punctuation_method: COMMA_PERIOD/g' config1.textproto
else
    sed -i ''  's/punctuation_method: .*/punctuation_method: KUTEN_TOUTEN/g' config1.textproto
fi

/usr/local/bin/protoc --encode=mozc.config.Config config.proto < config1.textproto > ../config1.db

# 設定を反映させるために、Google日本語入力を再起動
pkill GoogleJapaneseInput
open -a GoogleJapaneseInput

試しに実行してみると、句読点からカンマ・ピリオドに、カンマ・ピリオドから句読点に正しく変更されました。あとは、このシェルスクリプトをショートカットキーで呼び出せるようにします。

2. Automator でシェルスクリプトをアプリケーション化する

  1. Automator.app を起動する
  2. 「書類の種類を選択してください」で「ワークフロー」を選択する
  3. 左側のメニューから「ユーティリティ」を選び、「シェルスクリプトを実行」を選択する
  4. 内容をsh "/Users/$(whoami)/Library/Application Support/Google/JapaneseInput/scripts/script.sh"に書き換える
  5. Command + S で保存する(名前は SwitchPunctuationMethod 、フォーマットはアプリケーションにする)

3. ショートカットキーを割り当てる

  1. Shortcuts.app を起動する
  2. ショートカットを新規に作成して、アクションとして「Appを開く」を設定する
  3. App に「SwitchPunctuationMethod」 を指定する
  4. 右側の詳細タブから、「キーボードショートカットを追加」を選択し、ショートカットキーを割り当てる(今回は「Cmd + Shift + Ctrl + Space」としました)

動作イメージ

以下の GIF が実際に動作している様子です。いちいち GUI を開かずとも、ショートカットキーのみで、句読点とカンマ・ピリオドを切り替えられるようになりました。

実際はちょっと不具合ある

ショートカットキーを押すと Google 日本語入力のプロセスを再起動しているため、強制的に半角入力になります。そのため、ショートカットキーを押してから,ひらがな入力に切り替えると、上手いこと句読点のスタイルを切り替えることができます。

Discussion