UbuntuボックスでCtrlキーとSuperキーを入れ替えようとしています。
Xmodmapを使用してSuperとCtrlを入れ替えることができました。今、私はsttyintrをSuper_L + Cに変更する必要があります
私は一生の間、スーパーキーの表記を見つけることができません。 (たとえば、^はコントロールキーです)
誰かがsttyを使ったスーパーの表記が何であるか知っていますか?入力できるようにしたい
stty intr Super_L + C
例えば。
または、Super + Cを割り込みにする他のさらに良い方法
そのための表記はありません。
一般に、stty(およびこれらの設定を使用するOSコンポーネント)はキー自体を認識しません–ターミナルアプリはそれらのキーをバイトシーケンスに変換しますttyレイヤーはそれらの変換されたバイトのみを認識します。sttyでは特定のbyteを設定して、ttyレイヤーに割り込み信号をトリガーさせることができます。
言い換えると、intrパラメータは、実際にenterできるシンボルに対応する1バイトの値です。 (初期のUnixシステムでは、intrは#
記号に設定されていました。)
したがって、intrを^C
に設定すると、バイト0x03の場合はstty shorthand になります(比較:文字C
はASCIIでは0x43です)。基本的に、ShiftとCtrlはどちらも、「ベース」バイトの一部のビットを設定およびクリアするだけです。ただし、Superに相当するものはありません。
その結果、ほとんどの端末は単にSuperを無視し、ベースレターを変更せずに送信します。一部のmightはANSI「エスケープ」シーケンス(矢印キーまたはファンクションキーから取得するものと同様)を送信しますが、とにかくsttyでそれらを使用することはできませんでしたそれでも1バイトが必要だからです。割り込みキーをマルチバイトシーケンスにバインドすることはできません。最初のバイトを取得するだけです。
したがって、できる唯一のことは、ターミナルアプリ自体をハックして、Super + Cキーが押されたときに0x03バイトを送信することです。一部のターミナルエミュレータは、一般的な「キーボードショートカット」を介してこれをサポートしますが、実際のソースコードパッチが必要な場合もあります。