コピー/貼り付け/すべて選択/検索/などに物理スーパー/メタキーを使用できるようにCtrlとSuperを変更したいと思います。通常、存在しないアプリケーション固有の構成はありません。
ただし、物理制御キーにはSIGINT、EOF、一時停止などを維持したいと思います。
私は私が知っている限り、URxvt.keysym.M-c: ^C
修飾キーを別のキー記号に変更したり、キーコードに直接変更したりすることはできません。stty
^K
可能ですか?
答え1
いくつかのキー入力 - 信号変換は非常に低いレベルで行われます。これは、ターミナルエミュレータプロセスまたは物理ターミナルハードウェアとターミナルで実行されているプログラムとの間を中継するときに、カーネルの通常のターミナルドライバによって実行されます。ドライバは文字だけを理解します(文字はバイトを意味します。これらのインタフェースを設計するときは、マルチバイト文字セットは重要ではありません)。
ファンクションキー以外の修飾子を含むか、ファンクションキーShiftを含むほとんどのキーストロークには対応する文字がないため、端末は複数文字のエスケープシーケンス(ASCIIで始まる)を送信する必要があります。エスケープ文字)。バラよりbash - Ctrl + Alt + Spaceを使用したキーシーケンスバインディングエラーそしてキーボード入力とテキスト出力はどのように機能しますか?このトピックに関する追加の背景情報です。
Ctrl+ letter(ASCII)に対応する文字があります。制御文字)、しかしSuper+ではありませんletter。Meta+はC2文字のシーケンスを送信し、ESC
C
+はSuperほとんどの端末でデフォルトでC送信されます。したがってC
、+(および一部の句読点)の信号をシングルバイト印刷可能文字に再バインドできます(ASCII以外のバイトにもバインドされますが、UTF-8では大きな混乱を招く可能性があります)。Ctrlletter
唯一の解決策は、CtrlSIGINTをトリガしたいキーストロークに対して+を送信するように端末エミュレータを設定することです。CRxvtの場合、正しい方向に進んでいますが、^C
2文字^
とを挿入するには、C
8進エスケープを使用して指定できるcontrol-c文字が必要です。また、+と実行の場合は+ではなく+M-c
です。たとえば、throughでSuperが何であるかを確認し、その数を修飾子として使用します。MetaCSuperCSuperCxmodmap -pm
mod1
mod5
URxvt.keysym.5-c: \003