macOS での ショートカットキーが言語毎に異なる故の問題

Published
Category
Input

macOS の Numbers でオートフィルをショートカットキーで使おうとして調べた結果 Command+¥ と表示されていたが、手元の環境はシステム環境で ANSI 配列を選択した自作キーボード (claw44) という状況だったので、いい感じに処理されるだろうと期待して Command+\ を入力してみた。 しかし動かず。設定で JIS 配列を選択すると ANSI 配列前提のキーマップとなっている claw44 ではどうにもならず、別の一般的な JIS 配列のキーボードを引っ張り出して接続してみた結果、JIS 配列設定で JIS 配列キーボードを使えばさすがにショートカットキーは正常に反応した。 そこから色々調べた結果、以下のような感じではないか推測と事実が得られた。

  • macOS のアプリケーションにおいて、日本語環境 (?) でショートカットキーに ¥ を要求している場合、その ¥ は USB HID Usage としては international3 を期待している
  • システム環境設定でキーボード配列を ANSI 配列にしていると international3 キーを入力しても最終的な文字の発生までたどり着かない(ショートカットキーも発生しない)
  • 文字の発生に至らないキーであっても、Karabiner-Elements の EventViewer 上ではそのキーの押下は検知されている(そのため別のキーへの置き換えも可能)
  • macOS のアプリケーションはシステムデフォルトまたはアプリケーションに対する言語設定で設定された言語に応じてショートカットキーを切り替え可能、かつそれはあくまで言語設定のみを反映しキーボード設定の配列の違いは考慮しない

以上より、もし出来るのであれば最も適当な対処法はアプリケーションでのショートカットキーを任意で切り替えさせることである、が、そんな直接的な設定は存在しない。 しかし macOS にはアプリケーションに対してシステムデフォルトとは異なる言語を認識させることが可能となっているので、ここで「英語」を設定してやるとショートカットキーも英語環境向け、つまり ANSI 配列向けのそれに変わる。 というわけで、Numbers やその他ショートカットキー的にどうしても使いづらいアプリケーションでは、アプリケーションの言語設定を「英語」と指定することでひとまずなんとかなる。 もちろんそのアプリケーションの UI が全て英語になるのでそれとのトレードオフではあるが(個人的には最近どんどん英語 UI に変えていってしまっているのでそんなに気にしていない)。

そもそも論として、そういう配列毎にあったりなかったりするキーをショートカットキーとして使わないでくれよ、という話。 そしてそれをキーボードの配列毎に制御していないザル仕様。どうしてこうなった。 macOS も Windows でやっているみたいにキーボード配列を自分で好き勝手定義できれば良いんですけどね。やり方が分からない(そんな方法あるのか?)。