次: Keyboard Menus, 前: Defining Menus, 上: Menu Keymaps
メニューキーマップがメニューを表示するようにする普通の方法は、 メニューキーマップをプレフィックスキーの定義にすることです。 (Lispプログラムから明示的にメニューをポップアップして、 ユーザーの選択を受け取れる。 Pop-Up Menusを参照。)
プレフィックスキーがマウスイベントで終っていると、 Emacsはメニューをポップアップすることでメニューキーマップを扱います。 これで、ユーザーはマウスで選択できるようになります。 ユーザーがメニュー項目をクリックすると、 当該メニュー項目をバインディングとする文字やシンボルが イベントとして生成されます。 (メニューが複数レベルになっていたりメニューバーから開いたときには、 メニュー項目は一連のイベントを生成する。)
メニューの開始にはボタン押し下げイベントを使うのがしばしば最良です。 そうすると、ユーザーはボタンを離すことでメニュー項目を選べます。
明示的に配置すれば、1つのキーマップをメニューペインとして表示できます。 それには、各ペインに対するキーマップを作成し、 つぎに、メニューのメインのキーマップにおいて、 (各ペインの)各キーマップに対するバインディングを作ります。 なお、これらのバインディングには、 `@'で始まる項目文字列を指定します。 項目文字列の残りの部分がペインの名前になります。 この例についてはファイルlisp/mouse.elを参照してください。 `@'で始まらない項目文字列の他の普通のバインディングは 1つのペインにまとめられ、サブマップに対して明示的に作られた 他のペインとともに表示されます。
Xツールキットのメニューにはペインはありませんが、 そのかわりに、サブメニューがあります。 項目文字列が`@'で始まるかどうかに関わらず、 入れ子になった各キーマップがサブメニューになります。 Emacsのツールキット版では、項目文字列の先頭の`@'に関して特別なことは、 `@'がメニュー項目に表示されないことです。
個別のキーマップからも複数ペインやサブメニューを作成できます。 プレフィックスキーの完全な定義は、 さまざまな活性のキーマップ(マイナモード、ローカル、グローバル)が与える 定義を併合することで得られます。 これらのキーマップのうち複数個がメニューであるとき、 そのおのおのが別々のペイン(Xツールキットを使わないEmacs)や 別々のサブメニュー(Xツールキットを使ったEmacs)になります。 See Active Keymaps。