メニューのキーボードショートカットの指定

Adobe AIR 1.0 およびそれ以降

ウィンドウメニューまたはアプリケーションメニューコマンドには、キーボードショートカット(アクセラレーター)を指定できます。キーまたはキーの組み合わせを押すと、データソースに指定された select イベントと onSelect イベントハンドラーが NativeMenuItem から送出されます。この動作は、ユーザーがメニューアイテムを選択した場合と同じです。

メニューのキーボードショートカットについて詳しくは、 ネイティブメニューコマンドと等価なキー(AIR) を参照してください。

MenuBuilder フレームワークを使用して、データソースの対応するノードに、メニューアイテムのキーボードショートカットを指定できます。データソースに keyEquivalent フィールドがある場合、MenuBuilder フレームワークによってその値がキーボードショートカットとして使用されます。

キーボードショートカットに含める修飾キーを指定することもできます。修飾キーを追加するには、 altKey フィールド、 ctrlKey フィールド、 cmdKey フィールドまたは shiftKey フィールドに true を指定します。指定したキーがキーボードショートカットに含まれます。デフォルトでは、Windows の場合は Ctrl キーが追加され、Mac OS X では Command キーが追加されます。このデフォルトの動作をオーバーライドするには、 defaultKeyEquivalentModifiers フィールドを false に設定して含めます。

次の例は、キーボードショートカットを含む XML ベースのメニューデータソースのデータ構造で、「keyEquivalentMenu.xml」というファイルに含まれています。

<?xml version="1.0" encoding="utf-8" ?> 
<root> 
    <menuitem label="File"> 
        <menuitem label="New" keyEquivalent="n"/> 
        <menuitem label="Open" keyEquivalent="o"/> 
        <menuitem label="Save" keyEquivalent="s"/> 
        <menuitem label="Save As..." keyEquivalent="s" shiftKey="true"/> 
        <menuitem label="Close" keyEquivalent="w"/> 
    </menuitem> 
    <menuitem label="Edit"> 
        <menuitem label="Cut" keyEquivalent="x"/> 
        <menuitem label="Copy" keyEquivalent="c"/> 
        <menuitem label="Paste" keyEquivalent="v"/> 
    </menuitem> 
</root>

次の例のアプリケーションでは、「keyEquivalentMenu.xml」からメニュー構造を読み込み、それをアプリケーションのウィンドウメニューまたはアプリケーションメニューの構造として使用します。

<html> 
    <head> 
        <title>XML-based menu with key equivalents example</title> 
        <script type="text/javascript" src="AIRAliases.js"></script> 
        <script type="text/javascript" src="AIRMenuBuilder.js"></script> 
    </head> 
    <body> 
        <script type="text/javascript"> 
            // Create a NativeMenu from "keyEquivalentMenu.xml" and set it 
            // as the application/window menu 
            var keyEquivMenu = air.ui.Menu.createFromXML("keyEquivalentMenu.xml"); 
            air.ui.Menu.setAsMenu(keyEquivMenu); 
        </script> 
    </body> 
</html>