- macOSでは「¥」と「\」が区別されており、外付けキーボードで両方を使い分けたいと考えました。
- Ergodoxにキーマッピングを試みましたが、キーコードの解釈がmacOS側で行われるため意図した挙動になりませんでした。
- 最終的にGoogle日本語入力の設定で「¥」を「\」に変更することで対応しましたが、「¥」の入力が不便になってしまいました。
1. 外付けキーボードの「¥ |」「\ _」キーを使い分けたい

最近、プログラミングの機会が増え、「\」を入力したいことが増えました。
いちいち「¥」変換するのも面倒です。
MacBookの外付けキーボードで「\ _」キーを追加しようとしたら、うまくいかず困りました。
Windowsと異なり、macOSでは、「¥」と「\」は区別されています。
プログラミングなどでメタ文字として「\」を入力したいときに、「¥」キーを押しても正しく動作しません。
一般のJISキーボードには「¥ |」「\ _」キーがあります。
そこで、外付けキーボードで使い分けられるようにしたいと思いました。

しかし、「\ _」キーを押すと、Shiftキーを押していない通常の状態でも「_(アンダースコア)」が入力されてしまいます。
2. Onyxでキーマッピング
Ergodox にOnyxでキーマッピングをして、「\(ja)」にしても思った挙動になりません。
「\」にしても、「¥(ja)」にしても微妙に意図と違ってしまうのです。

2-1. International キーコードとは?
International キーコードは、異なるキーボードレイアウトや言語間での特殊キーを扱うためのものです。
これらは通常、OS側での設定やキーマップによって異なる文字や機能に割り当てられます1。
JISキーボードの一種OADG109AとJIS配列のApple Proキーボードを比較すると、
キー番号 | OADG109A キーボード2 | Apple Pro キーボード (JIS配列) | Usage Name (HID Usage Tables 1.11) | USB キーコード (hex) Usage Page / Usage ID |
---|---|---|---|---|
14 | ¥ | | ¥ | | Keyboard International3 | 07 / 89 |
56 | \ * | * | Keyboard International1 | 07 / 87 |
131 | 無変換 | —– | Keyboard International5 | 07 / 8B |
132 | 変換 | —– | Keyboard International4 | 07 / 8A |
133 | ひらがな カタカナ | —– | Keyboard International2 | 07 / 88 |
305 | —– | 英数 | Keyboard LANG2 | 07 / 91 |
306 | —– | かな カナ | Keyboard LANG1 | 07 / 90 |

特に日本語キーボード(JISレイアウト)は英語キーボード(USレイアウト)と比較して追加キーや異なる配置があるため、これらの International キーコードが使用されています。
3. MacBookのmacOSでのキーコードの解釈
Karabiner EventViewerでキーコードを調べてみると、記録されるキーコードと実際に出力される文字が違っていました。

- 「¥」に対応するキーは、international3で「¥」
- 「\」に対応するキーは、international1で、「_」
- 「]」に対応するキーは、「backslash」で、「:」
どうも、MacBookの内部的には英字キーボードが動作していて、keycodeをmacOSでの出力時に変換しているようです3。
つまり、ハードウェアから送信されるキーコードは、macOSによって「解釈」されているわけです。
キートップの印字 | keycode | 通常 | シフト |
---|---|---|---|
期待するキー | \ | _ | |
¥ | | international3 | ¥ | | |
\ _ | international1 | _ | _ |
] | backslash | ] | * |
ですので、Onyxでキーマッピングするときには、逆算する必要があるようですが、期待するキー」に対応するキーコードが見つかりません。
仕方がないので、Google 日本語入力の「¥」を「\」に設定することにしました4。

本当は、キーによって「\」と「¥」を使い分けたかったのですが、この方法だと「¥」を入力するのが面倒です。
Karabiner Elementsで、むりやり置き換えるしかないのかな
![[mac] Bluetoothキーボードをつないだら修飾キーの変更がスムーズでびっくりした【logi K370S】](https://chiilabo.com/wp-content/uploads/2022/06/image-7-53-1024x576.jpg)
![[AMP] 投稿タイトルにバックスラッシュが含まれていたら【無効なエスケープシーケンス】](https://chiilabo.com/wp-content/uploads/2023/04/image-57-11-1024x576.jpg)
![[Mac] Windows用キーボードRealForceをつないだら思いのほか面倒だった(変換キーとかなキー)](https://chiilabo.com/wp-content/uploads/2023/06/image-8-31-1024x576.jpg)


(補足)
- – USBキーボードのキーコード
- 日本語109キーボードはOADGが標準化したが、当初の配列(OADG 109型)と、Windowsでの利用にあわせて刻印を変えたキーボード(OADG 109A型)の2種類があり、~(チルダ、波ダッシュ)の刻印位置などが若干異なる – OADG109AキーボードとJISキーボードの違いを教えてください。 … – Yahoo!知恵袋
- キーコードの解釈はOS側に任されているようで、「どの種類のキーボードが認識されているか」によってキーコードが変わります。-【QMK】JPキーコードでキーマップを定義する – 天高工房
- Mac は ‘¥’ と ‘\’ を区別していて、プログラミングを行う場合、
¥
キーで直接バックスラッシュが入力できたほうが良いため、そのように変更します。 – Mac Book Pro セットアップメモ #Mac – Qiita