Macbookの内蔵キーボードを使っていると、物理的なHome/Endキーがないため、⌘ + ← / ⌘ + →を使うことが多いでしょう。
ただし、実はWindowsでいう「Home/End」に対応しているmacOSのホットキーは、2セットあります。公式ドキュメントによると
- ⌘ + ← / ⌘ + →:カーソルを行の最初もしくは最後に移動する
- Fn + ← / Fn + →:ドキュメントの最初もしくは最後にスクロールする
確かに、上記のどちらも、WindowsではHome/Endを使っていましたね。編集モードだと前者の動き、参照モードだと後者の動きが「自然」だと、Windowsユーザが考えるかもしれません。
となると、テキストエディターの場合、前者の通り「⌘ + ← / ⌘ + →」で行の最初もしくは最後に移動すれば良いと思っていました。しかし実際に確認すると、アプリケーションによって必ずしも公式ドキュメントの動きになるわけではありません。
アプリケーションとバージョン | ⌘ + ← / ⌘ + →の挙動 | Fn + ← / Fn + →の挙動 |
---|---|---|
Microsoft Word for Mac (ver 16.86) | カーソルを行の最初もしくは最後に移動 | カーソルを行の最初もしくは最後に移動 |
Microsoft Excel for Mac (ver 16.86) | カーソルを1つ前の単語もしくは1つ後ろの単語に移動 | カーソルを行の最初もしくは最後に移動 |
Microsoft PowerPoint for Mac (ver 16.86) | カーソルを行の最初もしくは最後に移動 | カーソルを行の最初もしくは最後に移動 |
Pages (ver 14.1) | カーソルを行の最初もしくは最後に移動 | ドキュメントの最初もしくは最後にスクロール |
Numbers (ver 14.1) | カーソルを行の最初もしくは最後に移動 | ドキュメントの最初もしくは最後にスクロール |
Keynote (ver 14.1) | カーソルを行の最初もしくは最後に移動 | ドキュメントの最初もしくは最後にスクロール |
テキストエディット (ver 1.19) | カーソルを行の最初もしくは最後に移動 | ドキュメントの最初もしくは最後にスクロール |
VS Code (ver 1.91.1) | カーソルを行の最初もしくは最後に移動 | カーソルを行の最初もしくは最後に移動 |
Safari (ver 17.6) | カーソルを行の最初もしくは最後に移動 | ドキュメントの最初もしくは最後にスクロール |
Chrome (ver 127.0.6533.120) | カーソルを行の最初もしくは最後に移動 | カーソルを行の最初もしくは最後に移動 (ただし、場合によってドキュメントの最初もしくは最後にスクロールすることもある) |
* 全て編集モード(カーソルが表示され、入力できる状態)で確認したものです。
* macOSのバージョンはSonoma 14.6.1です。
結論としては
- ほとんどのアプリケーションは、⌘ + ← / ⌘ + →をWindowsのHome/Endと同じ仕様に対応している
- Apple製品は、Fn + ← / Fn + →をスクロール機能として実装している(公式ドキュメント通り)
- Excelが厄介で、WordやPowerPointなどの兄弟製品を含め、他のアプリケーションとの一貫性はない
仕事でExcelやGoogle Spreadsheetの1セル内でカーソルを移動して複数行のテキストを編集したりすることが多いので、ホットキーが異なると非常に使いにくいです。ただし、調べたところExcel for Macにホットキーの再定義機能がなく、~/Library/KeyBindings/DefaultKeyBinding.dictを設定する方法もうまくいきません。
そこでやはり3rdパーティのソフトに頼るしかないと思い、早速Karabiner-Elementsをインストール。
Karabiner-Elementsはオープンソースのツールで、非常にパワフルです。Karabiner-Elementsをインストール後、「Complex Modifications」を開き、「Add your own rule」でカスタマイズのルールを追加。
{
"description": "Excel Key Patch with Macbook Internal Keyboard",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "left_arrow",
"modifiers": {
"mandatory": ["left_command"],
"optional": ["any"]
}
},
"to": [
{
"key_code": "left_arrow",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": ["^com\\.microsoft\\.Excel$"]
},
{
"type": "device_if",
"identifiers": [
{
"is_built_in_keyboard": true
}
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "right_arrow",
"modifiers": {
"mandatory": ["left_command"],
"optional": ["any"]
}
},
"to": [
{
"key_code": "right_arrow",
"modifiers": [
"fn"
]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": ["^com\\.microsoft\\.Excel$"]
},
{
"type": "device_if",
"identifiers": [
{
"is_built_in_keyboard": true
}
]
}
]
}
]
}
カスタマイズルールは、JSON形式で記載するので非常にわかりやすいです。上記のルールは
- 内蔵キーボード、かつExcelアプリケーションで入力時にのみ
- 「左⌘ + 左右矢印キー」を「Fn + 左右矢印キー」にremapする
というものになります。ちなみに、右⌘キーについては変更していないので、「右⌘ + 左右矢印キー」は今まで通り、「カーソルを1つ前の単語もしくは1つ後ろの単語に移動」の機能を果たしてくれます。
一応これで解決ですが、もっと簡単でツール不要で解決できる方法はないかと疑問に思っています。ご存知の方、ぜひご教示ください。