Bashのメタキーは、元々このように定義されていました(lib/readline/ChangeLog
):
Mon Jul 13 11:34:07 1992 Brian Fox (bfox@cubit)
* readline.c: (rl_variable_bind) New variable "meta-flag" if "on"
means force the use of the 8th bit as Meta bit. Internal variable
is called meta_flag.
それはたまたまncursesとxtermで解釈される方法です。いくつかのオプションこの機能を行うために設けられた端子(その点が普及しなかった端末のほとんどは、あなたがハードコード行動(とは非常に興味深い使用が発生します)。。terminfoのマニュアルページのドキュメントこれらの端末の能力:
has_meta_key km km Has a meta key
(i.e., sets 8th-bit)
meta_off rmm mo turn off meta mode
meta_on smm mm turn on meta mode
(8th-bit on)
機能の説明:
端末にシフトキーとして機能する「メタキー」があり、送信される文字の8ビット目を設定している場合、この事実はで示されkm
ます。それ以外の場合、ソフトウェアは8ビット目がパリティであると想定し、通常はクリアされます。この「メタモード」をオンまたはオフにする文字列が存在する場合は、smm
およびとして指定できますrmm
。
Alt
キーに応答してエスケープ文字のプレフィックスを付ける別の機能が、一部のターミナルエミュレータに組み込まれました。Bash(実際にはreadline
ライブラリ)は、2004年からの変更ログでその使用法を文書化します。
lib/readline/callback.c
- use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to
simulate the recursion used to decode multicharacter key sequences
(even things like ESC- as meta-prefix
メタは、修飾キーの特殊なケースです。controlおよびのようにshift、別のキーと同時に押すと、そのキーを単独で押すのとは異なるものが表示されることを期待しています。Xは、キーのXイベントで渡される修飾子値にビットを割り当てることにより、修飾子キーを提供します。キーを押すことは、複数のXイベントにすることができます。Xは、修飾子を保持しながらこれらのイベントを結合するための関数を提供します。
Xは、キーボードに表示される各キーの記号も定義します。イベントを結合する関数の特別な処理により、他の値(Unicodeなど)を提供します。
しかし、「メタ」は特別なケースです。
Xアプリケーションにはmeta、慣例による場合を除き、キーはありません。Xには、メタキーまたはメタ修飾子の定義がありません。従来は、端末が探しAlt-keyおよび/またはに知られている修飾の一つxmodmap
、例えば、mod2
。後のxkb機能は、Altキーを見つけるための情報の別のレイヤーを提供することにより、物事を複雑にします(ただし、この説明と比べて改善はありません)。
もちろん、metaについて特に何xmodmap
もxkb
知らないということを考えると、コンベンションはこれまでのところあなたを連れて行くことができます。たとえば、xtermは構成可能であり、すべてのユーザーが同じ方法でメタを構成するわけではありません。たとえば、リソースで使用されている場合など、意図したメタキーではない場合があります。別のキーはメタキーかもしれませんが、ユーザー(特にbashでエスケープシーケンスを使用しているユーザー)は、を押したときにエスケープ文字を送信したい場合があります。ただし、修飾子として構成されていない限り、それは発生しません。xtermはイベントを単独で結合しません。Alttranslation
Alt
xtermにはいくつかのリソース設定があります(マニュアルページに記載されています)。
altIsNotMeta
およびaltSendsEscape
(2007年に追加)。
eightBitInput
以来、2006のメタモードの元の意味に対応し、提供し、このために定義されたエスケープシーケンスがあるsmm
とrmm
(セット/削除メタモード)端末機能は。
eightBitInput
デコードされたUnicode値を未加工の入力バイトではなく128シフトすることにより、UTF-8を考慮するように2003年に修正されました。
metaSendsEscape
1999年からの日付
eightBitInput
は、よりずっと古いですmetaSendsEscape
。X11R4(1989)以降、メタモード(8ビット目を追加)またはキーの前にプレフィックスを付ける選択肢が実装されましたescape。ただし、この機能は起動時に決定されました。初期化中にチェックされ、入力が8ビットを許可するか7ビットのみを許可するように設定されているかが判断されました。
一部の人々は2つ(8ビットとエスケーププレフィックス)を同一視し、後者をメタモードと呼びます。問題の観点に応じて、eightBitInput
xterm のリソース設定は、実行可能なメタキーを取得するためのソリューションの一部です。
参考文献:
MENU
鍵はXでも気づかれていますか?使用しているウィンドウマネージャ-それらのいくつかは、キーの再定義に役立ちます。