ターミナルでEmacsを実行しようとしています。端末設定で「メタとしてオプションを使用」をオンにしたため、約95%が正常に機能しています。
キーシーケンスctrl- /(またはEmacs表記C- /)は「元に戻す」です。このキーシーケンスにより、端末はベルを鳴らします。どうすれば修正できますか?
ターミナルでEmacsを実行しようとしています。端末設定で「メタとしてオプションを使用」をオンにしたため、約95%が正常に機能しています。
キーシーケンスctrl- /(またはEmacs表記C- /)は「元に戻す」です。このキーシーケンスにより、端末はベルを鳴らします。どうすれば修正できますか?
回答:
Control- /
は、一連の標準制御コードの一部ではありません。多くの端末エミュレーションでキーストロークとして直接表現することはできません。このようなキーストロークは、特定のプラットフォーム固有の「スキャンコードモード」または「GUIモード」でのみ適切に検出できます(APIは、使用されているキーと修飾子を正確に通知します)。端末エミュレーターは、事実上無効なキーストロークであるため、ビープ音を鳴らしています。
標準制御コードは、「制御」バージョンのみを対象としています
@
A
– Z
[\]^_
(ASCII 0-31)、および?
(ASCII 127)ほとんどのUSキーレイアウトで実行されているほとんどのターミナルエミュレータプログラムShiftでは、いくつかの「制御コード」を生成するために押す必要があります。
@
ですShift2)^
ですShift6)_
ですShift-)?
ですShift/)。C-?通常、Backspace(Appleキーボードでは、追加記号withoutなしで「削除」とラベル付けされたキー)またはDelete(Appleキーボードでwithがあるキー)によって生成されます。ttyベースのEmacsでは、通常undo
C- /の代わりにC-_を使用できます。
Ctrl- /は、VT102の時代以降のCtrl-_と同等の0x1fを送信します。多くのVT100エミュレータがありますが、実際にはVT102エミュレータです。iTerm2は、この動作に従っているため機能します。
VT100仕様に厳密に準拠するエミュレーターのみがCtrl- /を送信できません。ターミナルアプリもその1つだと思います。
VT100は、コントロールキーが押されたときに、7ビットASCIIの最上位2ビットをマスクします。/は0x2f、oは0x6fです。2ビットがマスクされると、両方とも0x0fになります。VT100はCtrl-oを送信できますが、Ctrl- /は送信できません。