Optionキーとの組み合わせで入力される✝などの特殊文字・記号を無効化する
リーナー開発チームの黒曜(@kokuyouwind)です。
前回記事 の Devin AI に続き、 Cursor を使い始めました。
それまで IntelliJ を使っていたので、 Cursor のショートカット設定などを調整しながら使っているんですが、その中で一部ショートカットが特殊文字に食われてしまい効かない問題に遭遇しました。
結論からいうと、英語入力につかう入力ソースを「Unicode 16進数入力」に変えることで解決しました。
意外と日本語でこの解決方法が見つからなかったので記事にしておきます。
✝ 特殊記号でショートカットが効かない問題 ✝
自分はもともと Emacs を使っていたので、その時の癖で「定義元へジャンプ」に Option+t
を、「元の場所へジャンプ」に Ctrl+t
を、それぞれ設定しています。[1]
IntelliJ ではこのショートカットが問題なく動いており、例えば class AuthenticatedController < ApplicationController
の ApplicationController
にカーソルを置いている状態で Option+t
を押すと class ApplicationController
にジャンプします。
ここで Option+t
を押すと…
定義元にジャンプする
ところが Cursor (というか VSCode) で「定義へ移動」のショートカットに Option+t
を割り当てても、 ✝
という特殊記号が入力されてしまいコードジャンプが機能しませんでした。
ここで Option+t
を押すと…
Application✝Controller が爆誕
どうやら MacOS では Option+なにかのキー
でウムラウトやギリシャ文字などを入力するショートカットになっており、そちらが優先されて各ソフトウェアでのショートカットが機能しないようです。[2]
英語の入力ソースを「Unicode 16進数入力」にする
英語の入力ソースは、デフォルトの「ABC」か Google 日本語入力の「英数(Google)」にしている人がほとんどではないでしょうか。
デフォルトの英語入力を使っていた
Google 日本語入力付属の英語ソースもある
ですが、これらの入力ソースはどちらも Option+t
で ✝
が入るなどの特殊文字ショートカットが入っており、 Cursor で定義ジャンプが機能しませんでした。
そこで使えるのが、実は「その他」カテゴリの中にある「Unicode 16進数入力」です。
「その他」カテゴリにひっそりいる[3]
これを追加し、通常の英語入力ソースは削除します。
英語が入力できなくなりそうにみえるが、問題ない
「Unicode 16進数入力」は Option キーを押しながら Unicode コードポイントを入力するモードですが、修飾キーを押さなければ英字が普通に入力できます。また Option キーを押しっぱなしにして 4 文字以上を入力しない限りは Unicode に該当しないので記号が入力されることもありません。
これによって、 Cursor での各種ショートカットが問題なく動作するようになりました。
なお、この解決方法は以下のスレッドを参考にしました。
キーレイアウトファイルの利用について
ところで、「Mac 特殊文字 無効化」などで検索すると「キーレイアウトファイルをダウンロードするか、 Ukelele で自作して取り込む」記事がヒットします。
これらの方法で解決するかもと試したのですが、自分の環境では以下のような問題が発生しました。
- JIS 配列だとネット上にちょうどいいキーレイアウトファイルがない
- Ukelele で自作して取り込んでみたところ、特殊文字は消えたがなぜか Slack や Chrome で「Ctrl+a」などのショートカットが効かなくなった(完全に原因不明)
少なくとも自分の環境では「Unicode 16進数入力」を使うほうが安定していそうだったので、キーレイアウトファイルを使う方法は諦めました。
まとめ
「Option+なにかのキー」で特殊文字が入力されるのを、「Unicode 16進数入力」入力ソースで防ぐ方法を紹介しました。
日本語だとこの情報が見つからなさそうだったので、誰かの役に立てば幸いです。
宣伝
リーナーでは Cursor を始め、 AI を使った開発生産性向上に取り組んでいます。(現在は希望者全員にライセンスを配布しています)
興味があるかたは気軽にお話しましょう!
Discussion