Karabiner-ElementsでXcodeのOpen Quicklyを[Shift]+[Shift]で開く
この記事でやること
Xcodeでも[Shift]+[Shift]でSearch Everywhereしたい
→ Karabiner-Elementsを使用して、[Shift]+[Shift]を押した際、[Command]+[Shift]+[O]と同じ動作にする
ニッチな内容です。
背景
JetBrains製のIDEでは [Shift]+[Shift] を押すと、Search Everywhereでファイルを検索できる。
Android StudioやGoLandなどの製品にどっぷり浸かっている身としては、息を吸うようにShiftキーを連打しがち。
そのため、Search Everywhereに相当するXcodeの機能(Open Quickly)も[Shift]+[Shift]で使えるようにしたい。
無難な解決策
JetBrains製のIDE側のショートカットキーをXcodeに寄せるのが無難。
XcodeのOpen Quicklyは [Command]+[Shift]+[O] なので、JetBrains製のIDEもそちらに合わせれば「XcodeでもAndroid Studioでも同じショートカットキーが使える」という状態にはなる。
しかし、自分はあくまでIntelliJ系がメインで、Xcodeは必要に迫られて使っているだけなので、この解決策は採りたくない。
AppCode、今からでも終了撤回してくれないかな……多少高くても全然買うのですが……
Xcodeのショートカットキーを変更する(失敗)
Xcodeのメニューから、Xcode > Preferences > Key Bindings を開く。
この画面から変更できる……らしいのだが、Ventura + Xcode 14.2では変更できなかった。
同じことを言っている方もいる模様。
OSの設定画面からショートカットの割り当てができるようだが、[Shift]+[Shift]は設定できないので、今回やりたいことは実現できそうにない。
Karabiner-Elementsで対応する
Karabiner-Elementsを使って、[Shift]+[Shift]を[Command]+[Shift]+[O]に変換する。
インストール
勝手にUSキーボード判定に変わってしまうことがあるので、JISキーボード使いは気合いで直すこと。
(割とクセのあるソフトウェアな気がするので、個人的には[Shift]+[Shift]のためだけにインストールするのはコスパが悪い気がする)
触るのは確かこの辺り。
- Karabiner-Elementsの Virtual Keyboard で、JISキーボードを選択する
- Macのシステム設定 > キーボード > キーボードの種類の変更
- PC再起動
- 外付けキーボードなら再起動、ケーブルの抜き差しなども
設定ファイルを作成する
~/.config/karabiner/assets/complex_modifications
配下にJSONファイルを作成する。
{
"title": "Xcode",
"rules": [
{
"description": "Double tap 'left_shift' to 'command + shift + o'",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "left_shift"
},
"to": [
{
"key_code": "o",
"modifiers": [
"command",
"shift"
]
}
],
"conditions": [
{
"type": "variable_if",
"name": "left_shift_key",
"value": 1
},
{
"bundle_identifiers": [
"^com\\.apple\\.dt.Xcode$"
],
"type": "frontmost_application_if"
}
]
},
{
"type": "basic",
"from": {
"key_code": "left_shift",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"set_variable": {
"name": "left_shift_key",
"value": 1
}
},
{
"key_code": "left_shift"
}
],
"to_delayed_action": {
"to_if_invoked": [
{
"set_variable": {
"name": "left_shift_key",
"value": 0
}
}
],
"to_if_canceled": [
{
"set_variable": {
"name": "left_shift_key",
"value": 0
}
}
]
},
"conditions": [
{
"type": "variable_if",
"name": "left_shift_key",
"value": 0
},
{
"bundle_identifiers": [
"^com\\.apple\\.dt.Xcode$"
],
"type": "frontmost_application_if"
}
]
}
]
}
]
}
Karabiner-Elementsで設定を有効にする
Complex Modifications > Add rule に先ほどの設定が表示されるので、Enableにする。
以上!
うまく動かない場合
- Karabiner-Elementsを再起動してみる
- Devices から、自分が使っている入力機器の
Modify events
にチェックが入っていることを確認する - Karabiner-EventViewerを起動して、デバッグログを見てみる
設定を拡張する
他のショートカットキーも色々設定したいので、リポジトリを作成した。自分で設定した分はここで公開するつもり。
Discussion