C- /(つまり、コントロールスラッシュ)を端末に送信するにはどうすればよいですか?


13

ターミナルでEmacsを実行しようとしています。端末設定で「メタとしてオプションを使用」をオンにしたため、約95%が正常に機能しています。

キーシーケンスctrl- /(またはEmacs表記C- /)は「元に戻す」です。このキーシーケンスにより、端末はベルを鳴らします。どうすれば修正できますか?


FWIW、これはiTerm2-iterm2.comで動作しますが、^ _をどこでも使用できるように自分自身を再訓練して、より移植性を高めると思います。
スティーブンR.ルーミス

@ StevenR.Loomisポータブル?コントロール- /もAndroidの下に制御-_仕事...もない
マイケル・

@Michaelポータブルとは、ASCIIで表現できるため(受け入れられた回答を参照)、問題なくネットワーク接続を通過できるためです。さらに、私が見たほとんどの物理キーボードで使用できるようです。キーボードをAndroidデバイスにペアリングしようとしませんでしたが、ソフトまたはハードキーボードを指しますか?
スティーブンR.ルーミス14

@ StevenR.Loomisソフトウェア...制御部分は無視され、スラッシュまたはアンダースコアの挿入を取り消そうとします。
マイケル14

回答:


19

Control- /は、一連の標準制御コードの一部ではありません。多くの端末エミュレーションでキーストロークとして直接表現することはできません。このようなキーストロークは、特定のプラットフォーム固有の「スキャンコードモード」または「GUIモード」でのみ適切に検出できます(APIは、使用されているキーと修飾子を正確に通知します)。端末エミュレーターは、事実上無効なキーストロークであるため、ビープ音を鳴らしています。

標準制御コードは、「制御」バージョンのみを対象としています

  • @ AZ [\]^_(ASCII 0-31)、および
  • ? (ASCII 127)

ほとんどのUSキーレイアウトで実行されているほとんどのターミナルエミュレータプログラムShiftでは、いくつかの「制御コード」を生成するために押す必要があります。

  • C- @であるControlShift2(以降@ですShift2
  • C- ^れるControlShift6(以降^ですShift6
  • C-_であるControlShift-(以降_ですShift-
  • しかし、C-?常にではないかもしれないControlShift/(以降?ですShift/)。C-?通常、Backspace(Appleキーボードでは、追加記号withoutなしで「削除」とラベル付けされたキー)またはDelete(Appleキーボードでwithがあるキー)によって生成されます。

ttyベースのEmacsでは、通常undoC- /の代わりにC-_を使用できます。


1
徹底的な回答をありがとう。さまざまな種類の端末で遊んでみて、動作するかどうかを確認します。
ケビンピーターソン

1
「異なる端末タイプ」?別のターミナルエミュレータプログラムを意味しますか、それともターミナルで[ターミナル]> [設定]> [設定]> [プロファイル]> [詳細]> [ターミナルとして宣言]で設定される$ TERM値を参照してますか?(その設定は$ TERMの値を設定するだけです。端末エミュレーションの動作は変更しません。)Control- /はX11の機能であり、CocoaまたはTerminalではサポートされていません。
クリスページ

5

Ctrl- /は、VT102の時代以降のCtrl-_と同等の0x1fを送信します。多くのVT100エミュレータがありますが、実際にはVT102エミュレータです。iTerm2は、この動作に従っているため機能します。

VT100仕様に厳密に準拠するエミュレーターのみがCtrl- /を送信できません。ターミナルアプリもその1つだと思います。

VT100は、コントロールキーが押されたときに、7ビットASCIIの最上位2ビットをマスクします。/は0x2f、oは0x6fです。2ビットがマスクされると、両方とも0x0fになります。VT100はCtrl-oを送信できますが、Ctrl- /は送信できません。


これは受け入れられた答えであるはずです。
オコド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.