見出し画像

[Mac] 日本語入力中にマウスやトラックボール、余計なキーの挙動に振り回されないようにする [Karabiner]

Keyball44 を使い始め、そして Keyball44ish になってからも、どうしても対処できない課題が一つありました。

自動マウスレイヤー問題です。

自動マウスレイヤー問題とは。
Keyball で文字を入力している最中にトラックボールの動作を検知してしまって、予想だにしなかった状況を生み出してしまうしぐさのこと。
特に、日本語IMEで長文を入力している最中に下手なことをされると、変換前にも関わらず文章が確定してしまうことがあり、莫大な時間の損失を生み出すのである。

しょっさん創世記

他にも、トラックボール右横のキーに手のひらが触れてしまう問題もありますが、ここはQMKキーの設定でどうにでもなるでしょう。しかし、トラックボールに関しては触れていなかったとしても発生する可能性があります。特に 34mm ボール利用時は 25mm ボールよりも繊細に関知する傾向にあります。ただでさえ大きいのに、ボタンを押しただけの揺れでも検知されるとはやってられません。

そこでしょっさんは考えました。

日本語入力中に限っては、トラックボールのありとあらゆるボタンを検知しなければ良いのでは 🤔

そんなことできるわけない。誰しもがそんな微妙な挙動を制御できるとは思っていなかったその時。いつものあいつがやってくれました。そう、Karabiner-Elements です🎉。

あるコトを組み合わせることで、実に簡単に制御できるのです。

組み合わせに必要なものは次の3つです。

  • ポインティングデバイス全てのボタン入力 (from.anf) は

  • 日本語入力中 (input_source_if) に限って

  • 無効化 (vk_none) する

このための Complex Modification ファイルを生成して Karabiner-Elements へと反映するだけです。

しょっさんは、次のように「disable_mouse.json」ファイルを準備して設定しています。

{
  "title": "Disable Mouse Buttons for Keyball",
  "rules": [
    {
      "description": "Disable mouse buttons while inputting Kanji (Rev.1)",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "any": "pointing_button",
            "modifiers": {
              "optional": ["any"]
            }
          },
          "to": [
            {
              "key_code": "vk_none"
            }
          ], 
          "conditions": [
            {
              "type": "input_source_if",
              "input_sources": [
                {
                  "language": "^ja$"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
定義ファイルを Karabiner で読み込ませてるとこ
"Disable mouse buttons while inputting Kanji" を Enable にするだけ

この設定だけで、IME で日本語モードにしている最中はマウスのボタン全ての反応を無効化できます。従って、もしトラックボールに手のひらが触れてしまって自動マウスレイヤーに機能が働いてしまったとしても予測不能な挙動になることはありません。安心して日本語入力に集中できます。快適そのものです。

人は、どんなに気をつけていてもミスをします。性質上そういうものです。ですから、まちがった動作を引き起こさないように、その機能を停止してしまうことでミスを減らすことができます。

リスク回避策としては上出来でした。嬉しい。

ちなみになんですが。このトラックボール問題の次に頻出する「右下のキーに手のひらが当たってしまって、日本語入力の挙動や、普段の操作に影響する問題」について、しょっさんは次のように解決しています。

Tap 時には "ignore" させてキーを反応させず、Hold したときのみ特定のレイヤー操作。とする。

私は Layer(6) (ホイールスクロール) に割り当てていますが、
Win/Alt などにするも良し、そもそも割り当てないもありだと思います。

ふいにどうしても押してしまってだいなしにするキーは、このように無効化してしまうが正解です。うまく割り当てましょう。QMK バンザイ。

この記事は、安定した日本語入力が可能となった #Keyball44#Keyball44ish#テンティング して書きました


貴方がサポートしてくれると、私が幸せ。 私が幸せになると、貴方も幸せ。 新しいガジェット・ソフトウェアのレビューに、貴方の力が必要です。