✔️

(ATOKでの)日本語入力がまともにできないSuperlistで日本語入力をする

2024/10/30に公開

TL;DR

  • SuperlistのmacOS版デスクトップアプリでATOKを使ったまともな日本語入力ができない方は以下のJSONをKarabiner-Elementsに新規ルールとして読み込ませてお使いください
  • Superlist使用時のみEnterキーが全文確定(通常の変換時のEnterの挙動)専用のキーになります
  • 通常の改行ができなくなるので通常の改行はShift+Enterで行ってください

Superlistについて

タスク管理ツールです.どういうツールなのかはぐぐってください.

問題点

Superlistは日本語関係のバグがひどく,新規タスクを日本語で作成しようと日本語入力をし,変換を確定しようとEnterキーを押すと タスク名の確定と勘違いして タスク名の入力途中であるとにも関わらず問答無用で次のタスクを入力するための位置にカーソルが移動するというバグがあります.(運営に9月末に報告済みです)

私的な事情

実は勢いでSuperlistのサービス開始時に課金をしてしまったため,なんとしても日本語で入力できるようにして課金した元をとりたいという気持ちがありました.
加えてタスク管理ツールとしては割と気に入っており,本当に日本語入力ができないという一番の難点だけがいつまでも解決されないという状況に困り果てていました.

解決方法

Karabiner-Elementsというソフトウェアで解決しました.このソフトウェアはキーボードの入力を状況に応じて変換するためのソフトウェアです.
私は英字配列のmacを日頃から使用しているため,「コマンドキーを単体で押したときに、英数・かなキーを送信する。(左コマンドキーは英数、右コマンドキーはかな)」という機能(ルール)に大変お世話になっています.

今回は以下の要件を満たすようにして自作のルールを追加することで解決しました.

  • SuperlistのmacOS版アプリを起動中のみルールが適用される
    • ブラウザ版も同じバグを抱えてますが私はブラウザ版は使うつもりはないのでとりあえず放置してます
  • 入力ソースがATOKである場合だけルールが適用される
    • もう少し対象範囲を拡げて日本語入力全般がOnの場合とすしてもよいかもしれません
  • Enterキー(単体)をCtrl-Mに変換する
    • 私のATOKの設定を眺めたらCtrl-MがEnterと同じ「全文確定」というATOKの機能に割り慌てられていたのでEnterではない全文確定と同じ挙動をするキーに変換してやります(多分デフォルトでCtrl-Mは全文確定になってると思います)
  • Shift+EnterキーをEnter(単体)キーに変換する
    • Enterを全文確定するためだけのキーにしてしまうので通常の改行が全くできなくなってしまうのでShift+Enterで改行できるようにします

通常の改行がShift+Enterになってしまうという弊害がありますが,まともに日本語入力できないよりは遙かにマシだし昔のSlack等の改行と同じノリだと思えばそれほど苦ではありません(個人の感想).

設定(JSON)

先に書いた要件をChatGPTに伝えて試行錯誤した結果できたJSONは以下の通りです.

{
    "description": "Map Enter to Ctrl+M in Superlist during Japanese input mode",
    "manipulators": [
        {
            "conditions": [
                {
                    "bundle_identifiers": [
                        "^com\\.superlist\\.superlist\\.app$"
                    ],
                    "type": "frontmost_application_if"
                },
                {
                    "input_sources": [
                        {
                            "input_mode_id": "com.apple.inputmethod.Japanese",
                            "input_source_id": "com.justsystems.inputmethod.atok33.Japanese",
                            "language": "ja"
                        }
                    ],
                    "type": "input_source_if"
                }
            ],
            "from": { "key_code": "return_or_enter" },
            "to": [
                {
                    "key_code": "m",
                    "modifiers": ["left_control"]
                }
            ],
            "type": "basic"
        },
        {
            "conditions": [
                {
                    "bundle_identifiers": [
                        "^com\\.superlist\\.superlist\\.app$"
                    ],
                    "type": "frontmost_application_if"
                },
                {
                    "input_sources": [
                        {
                            "input_mode_id": "com.apple.inputmethod.Japanese",
                            "input_source_id": "com.justsystems.inputmethod.atok33.Japanese",
                            "language": "ja"
                        }
                    ],
                    "type": "input_source_if"
                }
            ],
            "from": {
                "key_code": "return_or_enter",
                "modifiers": {
                    "mandatory": ["shift"],
                    "optional": ["any"]
                }
            },
            "to": [{ "key_code": "return_or_enter" }],
            "type": "basic"
        }
    ]
}

Discussion