GhosttyでCtrl+Enterを入力すると、改行の代わりに;5;13~という文字列がそのまま入力される。
原因
Enterキー単体ではCR(\r)が送られるだけである。
Ctrlのような修飾キーを同時に押した場合、単なる\rだけでは「Ctrl押下」の情報を伝えられない。
GhosttyはxtermのmodifyOtherKeysというプロトコルに従い、修飾キー付きのキー入力をESC [ 27 ; <modifier> ; <keycode> ~という形式のエスケープシーケンスへエンコードして送信する。
xtermの仕様では、13はEnter(CR)のASCIIコード、5はControlが押されたことを表す修飾キー番号と定義されている(Shift=2、Alt=3、Control=5など)。
これに当てはめると、Ctrl+Enterの場合ESC[27;5;13~が送信されていると考えられ、先頭のESC[27部分が何らかの理由で表示されず、;5;13~という文字列に見えている可能性が高い。
シェルのreadlineやvimなど、使用しているアプリケーションがこのmodifyOtherKeysプロトコルを解釈できない場合、エスケープシーケンスがそのまま文字として入力されてしまう。
対処法
Ghosttyの設定ファイルにkeybindを追加し、Ctrl+Enterに対して意図した動作を明示的に割り当てる。
keybind = ctrl+enter=text:\n
この設定により、Ctrl+Enterで改行文字(\n)が入力されるようになる。
参考
Keybindings - Configuration - Ghostty Action Reference - Keybindings - Ghostty Shift+Enter produces escape sequence 27;2;13~ instead of newline in Claude Code - ghostty-org/ghostty Discussion #7780上記のDiscussionはShift+Enter(27;2;13~)についての報告であり、同じ仕組みがCtrl+Enterにも適用されると推測される。
\第一線のプログラマーの行動原理を学べる!/
