久しぶりにキーバインドをいろいろと見直したので、ついでに作成したメモです。
DefaultKeyBinding.dictを編集して、macOS全体で使えるキーバインドを変更してしまいます。主に、カーソルキー周りのキーバインドを変更しています。
情報を確認した環境
環境 | 情報 |
---|---|
OS | macOS Mojave(10.14.4) |
Date | 2019/04/24 |
何をやっているのか?
簡単に言うと『~/Library/KeyBindings/DefaultKeyBinding.dict』を編集することで、キーバインドを変更しています。詳しい話はこちらのサイトを参考に。
テキスト編集のキー操作を自在にコントロールする - ザリガニが見ていた...。
http://d.hatena.ne.jp/zariganitosh/20101026/text_key_binding
変更内容
control + up / down
元々はスクロールだったのを、実際にカーソルも移動するように変更。
- 元々の設定
"^\Uf700" = "scrollPageUp:";
"^\Uf701" = "scrollPageDown:";
"$\Uf700" = "moveUpAndModifySelection:";
"$\Uf701" = "moveDownAndModifySelection:";
- 変更後
"^\Uf700" = "pageUp:";
"^\Uf701" = "pageDown:";
"$^\Uf700" = "pageUpAndModifySelection:";
"$^\Uf701" = "pageDownAndModifySelection:";
command + up / down
ドキュメントの先頭/最後への移動はあまり使わないので、1行単位のスクロールに変更。
- 元々の設定
"@\Uf700" = "moveToBeginningOfDocument:";
"@\Uf701" = "moveToEndOfDocument:";
"@$\Uf700" = "moveToBeginningOfDocumentAndModifySelection:";
"@$\Uf701" = "moveToEndOfDocumentAndModifySelection:";
- 変更後
"@\Uf700" = "scrollLineUp:";
"@\Uf701" = "scrollLineDown:";
"@$\Uf700" = "scrollLineUp:";
"@$\Uf701" = "scrollLineDown:";
option + up / down
行頭/行末をたどる上下移動は使わないので、これをドキュメントの先頭/最後への移動に割り当て。
- 元々の設定
"~\Uf700" = (
"moveBackward:",
"moveToBeginningOfParagraph:",
);
"~\Uf701" = (
"moveForward:",
"moveToEndOfParagraph:",
);
"~$\Uf700" = "moveParagraphBackwardAndModifySelection:";
"~$\Uf701" = "moveParagraphForwardAndModifySelection:";
- 変更後
"~\Uf700" = "moveToBeginningOfDocument:";
"~\Uf701" = "moveToEndOfDocument:";
"~$\Uf700" = "moveToBeginningOfDocumentAndModifySelection:";
"~$\Uf701" = "moveToEndOfDocumentAndModifySelection:";
control + left / right
行頭/行末への移動はcommandのコンビネーションで出来るので、controlは単語単位の移動に割り当て。ある意味、この変更がしたくてキーバインドをいじったようなもの。
- 元々の設定
"^\Uf702" = "moveToLeftEndOfLine:";
"^\Uf703" = "moveToRightEndOfLine:";
"^$\Uf702" = "moveToLeftEndOfLineAndModifySelection:";
"^$\Uf703" = "moveToRightEndOfLineAndModifySelection:";
- 変更後
"^\Uf702" = "moveWordLeft:";
"^\Uf703" = "moveWordRight:";
"^$\Uf702" = "moveWordLeftAndModifySelection:";
"^$\Uf703" = "moveWordRightAndModifySelection:";
home / end
外付けのキーボードでHome/Endの動作が気になったので、行頭/行末への移動を割り当ててみました。問題があるようだったら、これはOFFで。
- 変更後
"\Uf729" = "moveToLeftEndOfLine:";
"\Uf72b" = "moveToRightEndOfLine:";
"$\Uf729" = "moveToLeftEndOfLineAndModifySelection:";
"$\Uf72b" = "moveToRightEndOfLineAndModifySelection:";
その他
あると便利な単語選択を、余ってるキーに割り当て。
- 追加
"^r" = "selectWord:";
DefaultKeyBinding.dict
最終的に、DefaultKeyBinding.dictはこんな感じになりました。
{
// /////////////////////////////////////////////////////////////
// MARK: - up / down
// ctrl + up/downでページ単位の移動
"^\Uf700" = "pageUp:";
"^\Uf701" = "pageDown:";
"$^\Uf700" = "pageUpAndModifySelection:";
"$^\Uf701" = "pageDownAndModifySelection:";
// cmd + up/downで行単位のスクロール
"@\Uf700" = "scrollLineUp:";
"@\Uf701" = "scrollLineDown:";
"@$\Uf700" = "scrollLineUp:";
"@$\Uf701" = "scrollLineDown:";
// opt + up/downで全体の先頭・最後へ移動
"~\Uf700" = "moveToBeginningOfDocument:";
"~\Uf701" = "moveToEndOfDocument:";
"~$\Uf700" = "moveToBeginningOfDocumentAndModifySelection:";
"~$\Uf701" = "moveToEndOfDocumentAndModifySelection:";
// /////////////////////////////////////////////////////////////
// MARK: - left / right
// ctrl + left/rightで単語単位の移動
"^\Uf702" = "moveWordLeft:";
"^\Uf703" = "moveWordRight:";
"^$\Uf702" = "moveWordLeftAndModifySelection:";
"^$\Uf703" = "moveWordRightAndModifySelection:";
// /////////////////////////////////////////////////////////////
// MARK: - home / end
// home / endで行頭・行末へ移動
"\Uf729" = "moveToLeftEndOfLine:";
"\Uf72b" = "moveToRightEndOfLine:";
// shift + home / endで行頭・行末まで選択
"$\Uf729" = "moveToLeftEndOfLineAndModifySelection:";
"$\Uf72b" = "moveToRightEndOfLineAndModifySelection:";
// /////////////////////////////////////////////////////////////
// MARK: - その他
// ctrl + rで単語選択
"^r" = "selectWord:";
}
感想(?)
-
『command + .』がcancelOperationに割り当てられてるのを発見
-
クリップボード関係の割り当ては、アプリによってはうまく動作しないのであきらめた
-
→ 仕方が無いので、行単位の編集を標準にしたかったのも断念
-
行単位のスクロールもアプリによってはうまく動かないけど、これは使えるときだけ使う
-
Karabiner-Elementsさんは便利だけど、まだまだ、ちょっとしたキー割り当てでも面倒すぎる