🍎

BetterTouchToolを「英かな」の代わりに使うより良い方法

2022/05/08に公開
1

BetterTouchToolを「英かな」の代わりに使う

MacのJIS配列のキーボードではスペースキーの両隣に「英数」「かな」キーがあり、これにより英数入力と日本語入力を切り替えることができます。 「英かな」は、左右の⌘キーをこれらの「英数」「かな」キーの代わりに使用できるようにする、日本人Macユーザーにはお馴染みの便利アプリです。ただし、最近はほとんどメンテされていないようで、ダークモード対応やユニバーサルバイナリ化などもされていません。

そこで、私はBetterTouchToolを「英かな」の代わりに使うよう設定しています。やり方を解説している記事は検索すると沢山出てくる(例えばこの記事)ので詳細は割愛しますが、やっていることはシンプルで、BTTのキーシークエンス機能を用いて、左⌘および右⌘が単体で押された時にその入力を「⇧⌃;」(英字入力に切り替えるMacのキーボードショートカット)および「⇧⌃J」(日本語入力に切り替えるMacキーボードショートカット)に置き換える、というものです。

ちなみにこれらのキーボードショートカットはiPadでも使えるので、覚えておくと案外役に立ちます。

問題点

この方法の問題点として、⌘キーを複雑なキーボードショートカットに置き換えているせいか、「英かな」と比較して誤爆や意図しない挙動が発生しやすい感じがします。また、一部のアプリ(iTerm2など)ではJや;などがそのまま入力されてしまい、アプリ側の設定で無効にしてやる必要がありました。

この手の問題は「英かな」では発生しません。「英かな」ではキーコード55,54をそれぞれ102,104へとマップしており、

https://github.com/iMasanari/cmd-eikana/blob/0a8e6b6a8b75b3eb2d9f6e8d45b19d7a7c5fdab2/cmd-eikana/AppDelegate.swift#L90-L91

この102,104というのがJISキーボードにおける「英数」「かな」キーに対応しています。これによって実際に「英数」「かな」キーを押した時と同じ挙動を実現しているので、Jや;が入力されてしまう問題を避けることができているわけですね。シンプルな置き換えなので挙動も安定しそうです。

https://github.com/iMasanari/cmd-eikana/blob/0a8e6b6a8b75b3eb2d9f6e8d45b19d7a7c5fdab2/cmd-eikana/KeyboardShortcut.swift#L242-L244

BTTにおける設定

同じ挙動をBTTでも再現したいです。BTTのキーシークエンス機能では、設定したシークエンスがあったときに代わりに行うキーボード操作を「記録」することで設定します。しかし、US配列のキーボードにはそもそも「英数」「かな」キーが存在しないので、目的とする入力を記録することができません。(JISキーボードを持っている人であれば、普通に記録できるのかもしれませんが)

ですが、BTTの設定をエクスポートして、中身を直接書き換えることで同じ挙動を再現することができます。BTTから出力されるbttpresetファイルは普通のテキストファイルなので、その中にあるキーシークエンスの設定を書き換えます。

まず、先に挙げた記事などを参考に、左右の⌘キーに対してキーシークエンスの設定を行います。その後、設定ファイルをエクスポートし、中身を適当なテキストエディタで開き、対応している場所を探します。そして、BTTShortcutToSendを102または104に、BTTAutoAdaptActionToKeyboardLayoutfalseに書き換えます。結果は以下のようになります。

[
  {
    "BTTTriggerType" : 624,
    "BTTTriggerTypeDescription" : "Please Select a Trigger ",
    "BTTTriggerClass" : "BTTTriggerTypeKeySequence",
    "BTTPredefinedActionType" : -1,
    "BTTPredefinedActionName" : "No Action",
    "BTTLayoutIndependentActionChar" : "",
    "BTTAutoAdaptActionToKeyboardLayout" : false,
    "BTTShortcutToSend" : "104",
    "BTTEnabled2" : 1,
    "BTTAlternateModifierKeys" : 0,
    "BTTRepeatDelay" : 0,
    "BTTUUID" : "A637D2A3-C289-4965-8E38-5B07BDDF155F",
    "BTTNotesInsteadOfDescription" : 0,
    "BTTEnabled" : 1,
    "BTTModifierMode" : 0,
    "BTTOrder" : 0,
    "BTTDisplayOrder" : 0,
    "BTTKeySequence" : {
      "BTTPauseBetween" : 1.9999999999999998,
      "BTTKeyCount" : 2,
      "BTTKeySequenceDownKeys" : [
        {
          "BTTKEYCharacter" : "r⌘ ",
          "BTTKEYCode" : 54,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1
        }
      ],
      "BTTKeySequenceMixedKeys" : [
        {
          "BTTKEYCharacter" : "r⌘ ",
          "BTTKEYCode" : 54,
          "BTTKEYDown" : 1,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1
        },
        {
          "BTTKEYCharacter" : "r⌘ ",
          "BTTKEYCode" : 54,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1
        }
      ],
      "BTTKeySequenceUpKeys" : [
        {
          "BTTKEYCharacter" : "r⌘ ",
          "BTTKEYCode" : 54,
          "BTTKEYOrderRelevant" : 1,
          "BTTKEYRequired" : 1
        }
      ]
    }
  }
]

この書き換えた設定ファイルを読み込むことで、かなり「英かな」と近い挙動を再現することができます。

Discussion

MakkeyMakkey

ほんと助かりました!ありがとうございます!