DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦b4eeceb8f⟧ Ada Source

    Length: 119808 (0x1d400)
    Types: Ada Source
    Notes: 03_class, FILE, Long Ada Source, R1k_Segment, e3_tag, procedure Rational_Access_Commands, seg_03ca79

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



-- Rational_Access universal keymap
-- Keymap Version 1_0_2 1/20/93
--
-- Do not move these comments.

with Access_List;
with Activity;
with Ada;
with Cmvc;
with Command;
with Common;
with Compilation;
with Debug;
with Design_Implementation;
with Editor;
with Io;
with Job;
with Library;
with Mail;
with Menu_Operations;
with Operator;
with Queue;
with Speller;
with System_Utilities;
with Text;
with What;

with Rational_Access_Key_Names;
procedure Rational_Access_Commands is
    use Rational_Access_Key_Names;

    type Intent is (Interrupt, Prompt, Execute);

    Action : Intent;

    Key1, Key2, Key3, Key4, Key5, Key6 : Key_Names;

begin

    case Action is

        when Interrupt =>

            case Key1 is
                when C_G | Cs_G =>
                    Job.Interrupt;
                when M_G | Ms_G =>
                    Job.Kill (0);
                when others =>
                    null;
            end case;

        when Prompt =>

            case Key1 is
                when M_H | Ms_H =>
                    case Key2 is
                        when 'c' | 'C' =>
                            What.Does (Name => "<CURSOR>");
                        when others =>
                            null;
                    end case;
                when M_O | Ms_O =>
                    case Key2 is  
                        when 'f' | 'F' =>
                            Editor.Image.Find (Name => "");
                        when others =>
                            null;
                    end case;
                when F1 | Help =>
                    What.Does (Name => "<CURSOR>");
                when others =>
                    null;
            end case;

        when Execute =>

            case Key1 is
                when S_F1 | S_Help =>
                    Editor.Key.Prompt (Key_Code => "");
                when F2 =>
                    Menu_Operations.File.Open;
                when S_F2 =>
                    Common.Edit;
                when F3 =>
                    Common.Explain;
                when S_F3 =>
                    Common.Clear_Underlining;
                when F4 =>
                    Menu_Operations.Cm.Check_Out;
                when S_F4 =>
                    Menu_Operations.Cm.Check_In;
                when F5 =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => False, Visible => True);
                when S_F5 =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => True, Visible => True);
                when F6 =>
                    Common.Create_Command;
                when S_F6 =>
                    Common.Complete;
                when F7 =>
                    Common.Enclosing (In_Place => False, Library => False);
                when S_F7 =>
                    Common.Enclosing (In_Place => True, Library => False);
                when F8 =>
                    Menu_Operations.Compile.Promote;
                when S_F8 =>
                    Menu_Operations.Compile.Demote;
                when F9 =>
                    Common.Format;
                when S_F9 =>
                    Common.Semanticize;
                    --when F10 =>
                    --    Reserved for Motif Menu bar
                when S_F10 =>
                    What.Home_Library;
                when F11 =>
                    Menu_Operations.File.New_File;  
                when S_F11 =>
                    Common.Object.Insert;
                when F12 =>
                    Editor.Cursor.Next (Prompt => True, Underline => True);  
                when S_F12 =>
                    Editor.Cursor.Previous (Prompt => True, Underline => True);


-- Item/Operation keys for compatibility with the old way
                when Object | C_Help => -- C_Help is alternative to C_F1
                    case Key2 is
                        when '!' | '1' =>
                            Common.Expand;
                        when '.' | '>' =>
                            Common.Elide;
                        when '/' | '?' =>
                            Common.Explain;
                        when 'A' | 'a' =>
                            Common.Object.First_Child;
                        when 'B' | 'b' =>
                            Common.Object.First_Child;
                        when 'C' | 'c' =>
                            Common.Object.Copy;
                        when 'D' | 'K' | 'd' | 'k' =>
                            Common.Object.Delete;
                        when 'E' | 'e' =>
                            Common.Object.Last_Child;
                        when 'G' | 'g' =>
                            Common.Abandon;
                        when 'H' | 'h' =>
                            Common.Object.Parent;
                        when 'I' | 'i' =>
                            Common.Object.Insert;
                        when 'J' | 'j' =>
                            Common.Object.Child;
                        when 'M' | 'm' =>
                            Common.Object.Move;
                        when 'N' | 'n' =>
                            Common.Object.Next;
                        when 'R' | 'r' =>
                            Common.Redo;
                        when 'S' | 's' =>
                            Common.Sort_Image;
                        when 'U' | 'u' =>
                            Common.Undo;
                        when 'V' | 'v' =>
                            Common.Redo;
                        when 'X' | 'x' =>
                            Common.Release;
                        when Tab =>
                            Editor.Char.Tab_To_Comment;
                        when Carriage_Return | S_Carriage_Return =>
                            Common.Commit;
                        when Up | S_Up =>
                            Common.Object.Previous;
                        when Down | S_Down =>
                            Common.Object.Next;
                        when Left | S_Left =>
                            Common.Object.Parent;
                        when Right | S_Right =>
                            Common.Object.Child;
                        when others =>
                            null;
                    end case;

                when Region =>
                    case Key2 is
                        when '"' | ''' | '6' | '^' =>
                            Editor.Region.Capitalize;
                        when '(' | '9' | '[' | '{' =>
                            Editor.Region.Start;
                        when ')' | '0' | ']' | '}' =>
                            Editor.Region.Finish;
                        when '+' | '=' =>
                            Editor.Region.Uncomment;
                        when ',' | '<' =>
                            Editor.Region.Lower_Case;
                        when '-' | '_' =>
                            Editor.Region.Comment;
                        when '.' | '>' =>
                            Editor.Region.Upper_Case;
                        when 'A' | 'a' | Begin_Of =>
                            Editor.Region.Beginning_Of;
                        when 'B' | 'b' =>
                            Editor.Region.Beginning_Of;
                        when 'C' | 'c' =>
                            Editor.Region.Copy;
                        when 'D' | 'K' | 'd' | 'k' =>
                            Editor.Region.Delete;
                        when 'E' | 'e' | End_Key =>
                            Editor.Region.End_Of;
                        when 'F' | 'f' =>
                            Editor.Region.Fill;
                        when 'H' | 'h' =>
                            Editor.Hold_Stack.Previous;
                        when 'J' | 'j' =>
                            Editor.Hold_Stack.Next;
                        when 'M' | 'm' =>
                            Editor.Region.Move;
                        when 'N' | 'n' =>
                            Editor.Hold_Stack.Push;
                        when 'P' | 'p' =>
                            Editor.Hold_Stack.Copy_Top;
                        when 'Q' | 'q' =>
                            Editor.Region.Justify;
                        when 'R' | 'r' =>
                            Editor.Hold_Stack.Rotate;
                        when 'T' | 't' =>
                            Editor.Hold_Stack.Swap;
                        when 'U' | 'u' =>
                            Editor.Hold_Stack.Top;
                        when 'X' | 'x' =>
                            Editor.Region.Off;
                        when Delete | S_Delete =>
                            Editor.Hold_Stack.Delete_Top;
                        when Up | S_Up =>
                            Editor.Hold_Stack.Top;
                        when Down | S_Down =>
                            Editor.Hold_Stack.Push;
                        when Left | S_Left =>
                            Editor.Hold_Stack.Previous;
                        when Right | S_Right =>
                            Editor.Hold_Stack.Next;
                        when others =>
                            null;
                    end case;

                when Window =>
                    case Key2 is
                        when '!' | '1' =>
                            Editor.Window.Expand;
                        when '.' | '>' =>
                            Editor.Window.Expand (-4);
                        when '/' | '?' =>
                            Editor.Window.Directory;
                        when 'A' | 'a' | Begin_Of =>
                            Editor.Window.Beginning_Of;
                        when 'B' | 'b' =>
                            Editor.Window.Beginning_Of;
                        when 'C' | 'c' =>
                            Editor.Window.Copy;
                        when 'D' | 'K' | 'W' | 'X' | 'd' | 'k' | 'w' | 'x' =>
                            Editor.Window.Delete;
                        when 'E' | 'e' | End_Key =>
                            Editor.Window.End_Of;
                        when 'F' | 'f' =>
                            Editor.Window.Focus;
                        when 'H' | 'h' =>
                            Common.Enclosing (In_Place => False,
                                              Library => False);
                        when 'J' | 'j' =>
                            Editor.Window.Join (1);
                        when 'M' | 'Z' | 'm' | 'z' |
                             Carriage_Return | S_Carriage_Return =>
                            Editor.Window.Promote;
                        when 'N' | 'n' =>
                            Editor.Window.Next;
                        when 'O' | 'o' =>
                            Editor.Window.Join (1);
                        when 'T' | 't' =>
                            Editor.Window.Transpose;
                        when 'U' | 'u' =>
                            Editor.Window.Previous;
                        when 'V' | 'v' =>
                            Editor.Window.Child;
                        when 'Y' | 'y' =>
                            Editor.Window.Demote;
                        when Delete | S_Delete =>
                            Editor.Window.Join (-1);
                        when Up | S_Up =>
                            Editor.Window.Previous;
                        when Down | S_Down =>
                            Editor.Window.Next;
                        when Left | S_Left =>
                            Editor.Window.Parent;
                        when Right | S_Right =>
                            Editor.Window.Child;
                        when others =>
                            null;
                    end case;

                when Image =>
                    case Key2 is
                        when 'A' | 'a' | Begin_Of =>
                            Editor.Image.Beginning_Of;
                        when 'B' | 'b' =>
                            Editor.Image.Beginning_Of;
                        when 'E' | 'e' | End_Key =>
                            Editor.Image.End_Of;
                        when 'F' | 'f' =>
                            Editor.Set.Fill_Mode (True);
                        when 'H' | 'h' =>
                            Editor.Image.Left;
                        when 'I' | 'i' =>
                            Editor.Set.Insert_Mode (True);
                        when 'J' | 'j' =>
                            Editor.Image.Right;
                        when 'N' | 'n' =>
                            Editor.Image.Down;
                        when 'O' | 'o' =>
                            Editor.Set.Insert_Mode (False);
                        when 'U' | 'u' =>
                            Editor.Image.Up;
                        when 'X' | 'x' =>
                            Editor.Set.Fill_Mode (False);
                        when Up | S_Up =>
                            Editor.Image.Up;
                        when Down | S_Down =>
                            Editor.Image.Down;
                        when Left | S_Left =>
                            Editor.Image.Left;
                        when Right | S_Right =>
                            Editor.Image.Right;
                        when others =>
                            null;
                    end case;

                when Line =>
                    case Key2 is
                        when '$' | '4' =>
                            Editor.Line.Center;
                        when ',' | '<' =>
                            Editor.Line.Lower_Case;
                        when '.' | '>' =>
                            Editor.Line.Upper_Case;
                        when '/' | '?' =>
                            What.Line;
                        when '6' | '^' =>
                            Editor.Line.Capitalize;
                        when 'A' | 'a' | Begin_Of =>
                            Editor.Line.Beginning_Of;
                        when 'B' | 'b' =>
                            Editor.Line.Beginning_Of;
                        when 'C' | 'c' =>
                            Editor.Line.Copy;
                        when 'D' | 'd' =>
                            Editor.Line.Delete;
                        when 'E' | 'e' | End_Key =>
                            Editor.Line.End_Of;
                        when 'I' | 'i' =>
                            Editor.Line.Insert (1);
                        when 'J' | 'j' =>
                            Editor.Line.Join;
                        when 'K' | 'k' =>
                            Editor.Line.Delete_Forward;
                        when 'O' | 'o' =>
                            Editor.Line.Open;
                        when 'T' | 't' =>
                            Editor.Line.Transpose;
                        when Delete | S_Delete =>
                            Editor.Line.Delete_Backward;
                        when others =>
                            null;
                    end case;

                when Word =>
                    case Key2 is
                        when ',' | '<' =>
                            Editor.Word.Lower_Case;
                        when '.' | '>' =>
                            Editor.Word.Upper_Case;
                        when '/' | '?' =>
                            Speller.Check_Text (Data => "<TEXT>");
                        when '6' | '^' =>
                            Editor.Word.Capitalize;
                        when 'A' | 'a' | Begin_Of =>
                            Editor.Word.Beginning_Of;
                        when 'B' | 'b' =>
                            Editor.Word.Beginning_Of;
                        when 'D' | 'd' =>
                            Editor.Word.Delete;
                        when 'E' | 'e' | End_Key =>
                            Editor.Word.End_Of;
                        when 'I' | 'i' =>
                            Speller.Learn_Word
                               (The_Word => "", Dictionary => 0);
                        when 'J' | 'j' =>
                            Editor.Word.Next;
                        when 'K' | 'k' =>
                            Editor.Word.Delete_Forward;
                        when 'M' | 'm' =>
                            Speller.Check_Image;
                        when 'N' | 'n' =>
                            Speller.Explain_Next;
                        when 'R' | 'r' =>
                            Speller.Learn_Replacement
                               (The_Word => "", Choice => 1, Dictionary => 0);
                        when 'T' | 't' =>
                            Editor.Word.Transpose;
                        when 'W' =>
                            Speller.Speller_Window (In_Place => True);
                        when 'X' | 'x' =>
                            Speller.Exchange_Word (Choice => 1);
                        when 'w' =>
                            Speller.Speller_Window (In_Place => False);
                        when Delete | S_Delete =>
                            Editor.Word.Delete_Forward;
                        when C_0 =>
                            Speller.Exchange_Word (Choice => 10);
                        when C_1 =>
                            Speller.Exchange_Word (Choice => 1);
                        when C_2 =>
                            Speller.Exchange_Word (Choice => 2);
                        when C_3 =>
                            Speller.Exchange_Word (Choice => 3);
                        when C_4 =>
                            Speller.Exchange_Word (Choice => 4);
                        when C_5 =>
                            Speller.Exchange_Word (Choice => 5);
                        when C_6 =>
                            Speller.Exchange_Word (Choice => 6);
                        when C_7 =>
                            Speller.Exchange_Word (Choice => 7);
                        when C_8 =>
                            Speller.Exchange_Word (Choice => 8);
                        when C_9 =>
                            Speller.Exchange_Word (Choice => 9);
                        when Down | S_Down =>
                            Speller.Explain_Next;
                        when Left | S_Left =>
                            Editor.Word.Previous;
                        when Right | S_Right =>
                            Editor.Word.Next;
                        when C_W | Cs_W =>
                            Speller.Speller_Window (In_Place => False);
                        when others =>
                            null;
                    end case;

                when Mark =>
                    case Key2 is
                        when '(' | '9' | 'A' | '[' | 'a' | '{' | Begin_Of =>
                            Editor.Macro.Start;
                        when ')' | '0' | 'E' | ']' | 'e' | '}' | End_Key =>
                            Editor.Macro.Finish;
                        when 'B' | 'b' =>
                            Editor.Macro.Start;
                        when 'F' | 'f' =>
                            Editor.Macro.Bind;
                        when 'H' | 'h' =>
                            Editor.Mark.Previous;
                        when 'J' | 'j' =>
                            Editor.Mark.Next;
                        when 'M' | 'X' | 'm' | 'x' |
                             Carriage_Return | S_Carriage_Return =>
                            Editor.Macro.Execute;
                        when 'N' | 'n' =>
                            Editor.Mark.Push;
                        when 'P' | 'p' =>
                            Editor.Mark.Copy_Top;
                        when 'R' | 'r' =>
                            Editor.Mark.Rotate;
                        when 'T' | 't' =>
                            Editor.Mark.Swap;
                        when 'U' | 'u' =>
                            Editor.Mark.Top;
                        when Delete | S_Delete | Backspace | S_Backspace =>
                            Editor.Mark.Delete_Top;
                        when Up | S_Up =>
                            Editor.Mark.Top;
                        when Down | S_Down =>
                            Editor.Mark.Push;
                        when Left | S_Left =>
                            Editor.Mark.Previous;
                        when Right | S_Right =>
                            Editor.Mark.Next;
                        when others =>
                            null;
                    end case;

--  misc characters.
                when ' ' | S_Space =>
                    Editor.Char.Insert_Character (1, ' ');
                when C_0 =>
                    Editor.Set.Argument_Digit (0);
                when C_1 =>
                    Editor.Set.Argument_Digit (1);
                when C_2 =>
                    Editor.Set.Argument_Digit (2);
                when C_3 =>
                    Editor.Set.Argument_Digit (3);
                when C_4 =>
                    Editor.Set.Argument_Digit (4);
                when C_5 =>
                    Editor.Set.Argument_Digit (5);
                when C_6 =>
                    Editor.Set.Argument_Digit (6);
                when C_7 =>
                    Editor.Set.Argument_Digit (7);
                when C_8 =>
                    Editor.Set.Argument_Digit (8);
                when C_9 =>
                    Editor.Set.Argument_Digit (9);
                when C_Minus | C_Underline =>
                    Editor.Set.Argument_Minus;
                when M_Minus | M_Underline =>
                    Editor.Cursor.Previous (Prompt => False, Underline => True);
                    -- when Cm_Minus | Cm_Underline =>
                    --     Editor.Cursor.Previous (Prompt => True, Underline => True);
                when Carriage_Return | S_Carriage_Return =>
                    Editor.Line.Indent;
                when C_Carriage_Return =>
                    Common.Commit;
                when M_Carriage_Return =>
                    Command.Debug;
                when Up =>
                    Editor.Cursor.Up;
                when S_Up =>
                    Editor.Image.Up;
                when C_Up =>
                    Common.Object.Previous;
                when M_Up =>
                    Editor.Cursor.Previous (Prompt => True, Underline => True);
                when Cm_Up =>
                    Editor.Window.Previous;
                when Down =>
                    Editor.Cursor.Down;
                when S_Down =>
                    Editor.Image.Down;
                when C_Down =>
                    Common.Object.Next;
                when M_Down =>
                    Editor.Cursor.Next (Prompt => True, Underline => True);
                when Cm_Down =>
                    Editor.Window.Next;
                when Left =>
                    Editor.Cursor.Left;
                when S_Left =>
                    Editor.Image.Left;
                when C_Left =>
                    Common.Object.Parent;
                when M_Left =>
                    Editor.Word.Previous;
                when Cm_Left =>
                    Common.Enclosing (In_Place => True, Library => False);
                when Right =>
                    Editor.Cursor.Right;
                when S_Right =>
                    Editor.Image.Right;
                when C_Right =>
                    Common.Object.Child;
                when M_Right =>
                    Editor.Word.Next;
                when Cm_Right =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => True, Visible => False);
                when Tab | S_Tab =>
                    Editor.Char.Tab_Forward;
                    -- when M_Tab =>   -- Motif defined
                    --Editor.Char.Tab_To_Comment;
                when Cm_Tab =>
                    What.Tabs;
                when Begin_Of =>
                    Editor.Line.Beginning_Of;
                when S_Begin_Of =>
                    Editor.Image.Beginning_Of;
                when C_Begin_Of =>
                    -- what line info
                    Menu_Operations.Dispatch (26);
                when Cm_Begin_Of =>
                    Editor.Window.Beginning_Of;
                when End_Key =>
                    Editor.Line.End_Of;
                when S_End_Key =>
                    Editor.Image.End_Of;
                when C_End_Key =>
                    Text.End_Of_Input;
                when Cm_End_Key =>
                    Editor.Window.End_Of;
                when Page_Down =>
                    Editor.Image.Down;
                when S_Page_Down =>
                    Editor.Image.End_Of;
                when Page_Up =>
                    Editor.Image.Up;
                when S_Page_Up =>
                    Editor.Image.Beginning_Of;
                when Delete =>
                    Editor.Char.Delete_Backward;
                when Backspace =>  
                    Editor.Char.Delete_Backward;
                when S_Delete | S_Backspace =>
                    Editor.Region.Delete;
                when C_Backspace | C_Delete =>
                    Editor.Line.Delete_Forward (Repeat => 1);
                when M_Backspace | M_Delete =>
                    Editor.Word.Delete_Backward;
                when Cm_Delete | Cm_Backspace =>
                    Editor.Char.Delete_Spaces;

                    -- Non-Alpha
                when C_Less_Than | C_Comma =>
                    Editor.Window.Expand (Lines => -4);
                when M_Less_Than | M_Comma =>
                    Editor.Word.Lower_Case;
                when Cm_Less_Than | Cm_Comma =>
                    Common.Undo;
                when C_Greater_Than | C_Period =>
                    Editor.Window.Expand (Lines => 4);
                when M_Greater_Than | M_Period =>
                    Editor.Word.Upper_Case;
                when Cm_Greater_Than | Cm_Period =>
                    Common.Redo;
                when C_Left_Bracket =>
                    Editor.Region.Start;
                when M_Left_Bracket =>
                    Editor.Macro.Start;
                when C_Right_Bracket =>
                    Editor.Region.Finish;
                when M_Right_Bracket =>
                    Editor.Macro.Finish;
                when M_Exclam | M_1 =>
                    Common.Expand;
                when C_Colon | C_Semicolon =>
                    Editor.Char.Insert_String (Value => ":=");
                when Cm_Exclam =>
                    Editor.Window.Expand (Lines => 4);
                when C_At_Sign =>
                    Editor.Mark.Push;
                when C_Left_Paren =>
                    Editor.Char.Insert_String (Value => "(" & Ascii.Quotation);
                when C_Right_Paren =>
                    Editor.Char.Insert_String (Value => Ascii.Quotation & ")");
                when M_Right_Paren | M_0 =>
                    Common.Elide;
                when Cm_Right_Paren =>
                    Editor.Window.Expand (Lines => -4);
                when C_Plus | C_Equal =>
                    Editor.Char.Insert_String (Value => "=>");
                when M_Plus | M_Equal =>
                    Editor.Cursor.Next
                       (Repeat => 1, Prompt => False, Underline => True);
                when Cm_Plus | Cm_Equal =>
                    Editor.Macro.Bind;
                when C_Bar =>
                    Editor.Char.Insert_String (Value => "--|");
                when C_Backslash =>
                    Editor.Region.Off;
                when M_Slash | M_Question =>
                    Common.Explain;  -- mostly for compatibility
                when C_Slash | C_Question =>
                    Editor.Window.Directory;
                when C_Quotation | C_Tick =>  -- differ fromRat
                    Editor.Char.Quote;

                    -- Alphabetic
                when C_A | Cs_A =>
                    Editor.Line.Beginning_Of;
                when C_B | Cs_B =>
                    Editor.Cursor.Backward;
                when C_C | Cs_C =>
                    Menu_Operations.Edit.Copy;
                when M_C | Ms_C =>
                    Common.Create_Command;
                when Cm_C | Cms_C =>
                    Editor.Line.Copy;
                when C_D | Cs_D =>
                    Editor.Char.Delete_Forward;
                when M_D | Ms_D =>
                    Editor.Word.Delete;
                when Cm_D | Cms_D =>
                    Editor.Line.Delete;
                when C_E | Cs_E =>
                    Editor.Line.End_Of;
                when Cm_E | Cms_E =>
                    Editor.Window.Demote;
                when C_F | Cs_F =>
                    Editor.Cursor.Forward;
                when C_H | Cs_H =>
                    Editor.Cursor.Left;
                when M_J | Ms_J =>
                    Editor.Word.Next;
                when C_J | Cs_J =>
                    Editor.Cursor.Right;
                when C_K | Cs_K =>
                    Editor.Line.Delete_Forward;
                when M_K | Ms_K =>
                    Editor.Word.Delete_Forward;
                when Cm_K | Cms_K =>
                    Editor.Window.Delete;
                when C_L | Cs_L =>
                    Editor.Screen.Redraw;
                when M_L | Ms_L =>
                    Editor.Screen.Clear;
                when C_M | Cs_M =>
                    Editor.Mark.Push;
                when Cm_M | Cms_M =>
                    Editor.Mark.Previous;
                when C_N | Cs_N =>
                    Editor.Cursor.Down;
                when M_N | Ms_N =>
                    Editor.Cursor.Next (Prompt => True, Underline => True);
                when Cm_N | Cms_N =>
                    Editor.Window.Next;
                when C_O | Cs_O =>
                    Editor.Line.Open;  
                when Cm_P | Cms_P =>
                    Editor.Window.Promote;
                when C_Q | Cs_Q =>
                    Editor.Key.Name;
                when M_Q | Ms_Q =>
                    Editor.Key.Prompt (Key_Code => "");
                when C_R | Cs_R =>
                    Editor.Search.Previous (Target => "", Wildcard => False);
                when Cm_R | Cms_R =>
                    Editor.Search.Replace_Previous (Target => "",
                                                    Replacement => "",
                                                    Repeat => 1,
                                                    Wildcard => False);
                when C_S | Cs_S =>
                    Editor.Search.Next (Target => "", Wildcard => False);
                when Cm_S | Cms_S =>
                    Editor.Search.Replace_Next (Target => "",
                                                Replacement => "",
                                                Repeat => 1,
                                                Wildcard => False);
                when C_T | Cs_T =>
                    Editor.Char.Transpose;
                when Cm_T | Cms_T =>
                    Editor.Line.Transpose;
                when M_T | Ms_T =>
                    Editor.Word.Transpose;
                when C_U | Cs_U =>
                    Editor.Cursor.Up;
                when M_U | Ms_U =>
                    Editor.Cursor.Previous (Prompt => True, Underline => True);
                when Cm_U | Cms_U =>
                    Editor.Window.Previous;
                when C_V | Cs_V =>
                    Editor.Image.Down;
                when M_V | Ms_V =>
                    Editor.Image.Up;
                when C_W | Cs_W =>
                    Editor.Region.Delete;
                when C_X | Cs_X =>
                    Editor.Set.Designation_Off;
                when M_X | Ms_X =>
                    Editor.Macro.Execute;
                when C_Y | Cs_Y =>
                    Editor.Hold_Stack.Top;
                when M_Y | Ms_Y =>
                    Editor.Hold_Stack.Next;
                when C_Z | Cs_Z =>
                    Editor.Image.Up;

                    -- the next 8 are the left-hand function keys on
                    -- a sun keyboard.  Disable them.  The top two
                    -- (L1, L2) leave alone as they are mapped to F11, F12

                when Props =>
                    Editor.Noop;
                when Undo =>
                    Editor.Noop;
                when Front =>
                    Editor.Noop;
                when Copy =>
                    Editor.Noop;
                when Open =>
                    Editor.Noop;
                when Paste =>
                    Editor.Noop;
                when Find =>
                    Editor.Noop;  
                when Cut =>
                    Editor.Noop;

                when M_2 | M_At_Sign =>
                    case Key2 is
                        when 'C' | 'c' =>
                            Editor.Char.Insert_String ("--| @COMPONENT_KIND ");
                        when 'D' | 'd' =>
                            Editor.Char.Insert_String ("--| @DECOMPOSITION ");
                        when 'N' | 'n' =>
                            Editor.Char.Insert_String ("--| @NOTE ");
                        when 'R' | 'r' =>
                            case Key3 is
                                when 'A' | 'a' =>
                                    Editor.Char.Insert_String ("--| @RAISES ");
                                when 'F' | 'f' =>
                                    Editor.Char.Insert_String
                                       ("--| @REQUIREMENT FUNCTION ");
                                when 'I' | 'i' =>
                                    Editor.Char.Insert_String
                                       ("--| @REQUIREMENT INTERFACE ");
                                when 'S' | 's' =>
                                    Editor.Char.Insert_String
                                       ("--| @REQUIREMENT SUBFUNCTION ");
                                when others =>
                                    null;
                            end case;
                        when 'S' | 's' =>
                            Editor.Char.Insert_String ("--| @STATES (");
                        when M_2 | M_At_Sign =>
                            Editor.Char.Insert_String ("--| @");
                        when others =>
                            null;
                    end case;

                when M_6 | M_Circumflex =>
                    Editor.Word.Capitalize (Repeat => 1);

                    ---------------
                    -- Menu maps --
                    ---------------

                when M_B | Ms_B => -- debug menu
                    case Key2 is
                        when 's' | 'S' =>
                            Command.Debug;
                        when 'w' | 'W' =>
                            Debug.Current_Debugger;
                        when 'f' | 'F' =>
                            Debug.Debug_Off (True);
                        when 'd' | 'D' =>
                            Debug.Debug_Off (False);
                        when 'p' | 'P' =>
                            -- bring up the palette ...
                            case Key3 is
                                -- debug palette stuff
                                when 'a' | 'A' =>
                                    Debug.Execute (Name => "all");
                                when 'b' | 'B' =>
                                    -- breakpoint frame
                                    case Key4 is
                                        when 'a' | 'A' =>
                                            -- Activate all breaks
                                            Debug.Activate (Breakpoint => 0);
                                        when 'b' | 'B' =>
                                            -- break here
                                            Debug.Break
                                               (Location => "<SELECTION>",
                                                Stack_Frame => 0,
                                                Count => 1,
                                                In_Task => "",
                                                Default_Lifetime => True);
                                        when 'd' | 'D' =>
                                            -- delete all breaks
                                            Debug.Remove (Breakpoint => 0,
                                                          Delete => True);
                                        when 'k' | 'K' =>
                                            -- break
                                            Menu_Operations.Debug.Break;
                                        when 't' | 'T' =>
                                            -- Temp break here
                                            Debug.Break
                                               (Location => "<SELECTION>",
                                                Stack_Frame => 0,
                                                Count => 1,
                                                In_Task => "",
                                                Default_Lifetime => False);
                                        when 'v' | 'V' =>
                                            -- deactivate all breaks
                                            Debug.Remove (Breakpoint => 0,
                                                          Delete => False);
                                        when others =>
                                            null;
                                    end case;
                                when 'c' | 'C' =>
                                    Debug.Execute (Name => "");
                                when 'd' | 'D' =>
                                    -- display frame
                                    case Key4 is
                                        when 'b' | 'B' =>
                                            -- Show all debugger state
                                            Debug.Show (Values_For =>
                                                           Debug.All_State);
                                        when 'e' | 'E' =>
                                            -- Show Execeptions
                                            Debug.Show (Values_For =>
                                                           Debug.Exceptions);
                                        when 'l' | 'L' =>
                                            -- Show libraries
                                            Debug.Show (Values_For =>
                                                           Debug.Libraries);
                                        when others =>
                                            null;
                                    end case;
                                when 'e' | 'E' =>
                                    Debug.Source (Location => "",
                                                  Stack_Frame => 0);
                                when 'g' | 'G' =>
                                    -- tracing frame
                                    case Key4 is  
                                        when 'a' | 'A' =>
                                            -- Activate all tracing
                                            Debug.Trace
                                               (On => True,
                                                Event => Debug.All_Events,
                                                In_Task => "",
                                                At_Location => "",
                                                Stack_Frame => 0);
                                        when 'd' | 'D' =>
                                            -- Deactivate all tracing
                                            Debug.Trace
                                               (On => False,
                                                Event => Debug.All_Events,
                                                In_Task => "",
                                                At_Location => "<SELECTION>",
                                                Stack_Frame => 0);
                                        when 's' | 'S' =>
                                            -- Show tracing
                                            Debug.Show (Values_For =>
                                                           Debug.Traces);
                                        when 't' | 'T' =>
                                            -- trace control
                                            Menu_Operations.Dispatch (41);
                                        when others =>
                                            null;
                                    end case;
                                when 'i' | 'I' =>
                                    Debug.Stop (Name => "all");
                                when 'j' | 'J' =>
                                    -- debug put...
                                    Menu_Operations.Dispatch (40);
                                when 'k' | 'K' =>
                                    Debug.Stack
                                       (For_Task => "", Start => 0, Count => 0);
                                when 'l' | 'L' =>
                                    Debug.Run (Stop_At => Debug.Local_Statement,
                                               Count => 1,
                                               In_Task => "");
                                when 'm' | 'M' =>
                                    Menu_Operations.Debug.Modify;
                                when 'o' | 'O' =>
                                    Debug.Stop (Name => "");  
                                when 'q' | 'Q' =>
                                    -- quit frame
                                    case Key4 is
                                        when 'd' | 'D' =>
                                            -- detach
                                            Debug.Debug_Off (Kill_Job => False);
                                        when 'k' | 'K' =>
                                            -- kill job being debugged
                                            Debug.Debug_Off (Kill_Job => True);
                                        when 't' | 'T' =>
                                            -- terminate debugger
                                            Debug.Kill (Job => True,
                                                        Debugger => True);
                                        when others =>
                                            null;
                                    end case;  
                                when 'r' | 'R' =>
                                    Debug.Run (Stop_At => Debug.Returned,
                                               Count => 1,
                                               In_Task => "");
                                when 's' | 'S' =>
                                    Debug.Run (Stop_At => Debug.Statement,
                                               Count => 1,
                                               In_Task => "");
                                when 't' | 'T' =>
                                    -- task / task info frame
                                    case Key4 is
                                        when 'a' | 'A' =>
                                            -- Show all tasks
                                            Debug.Task_Display
                                               (For_Task => "",
                                                Task_Set => Debug.All_Tasks);
                                        when 'b' | 'B' =>
                                            -- List blocked tasks
                                            Debug.Task_Display
                                               (For_Task => "",
                                                Task_Set => Debug.Blocked);
                                        when 'd' | 'D' =>
                                            -- List held tasks
                                            Debug.Task_Display
                                               (For_Task => "",
                                                Task_Set => Debug.Held);
                                        when 'h' | 'H' =>
                                            -- Hold all tasks
                                            Debug.Hold (Name => "all");  
                                        when 'i' | 'I' =>
                                            -- Show space info - all tasks
                                            Debug.Information
                                               (Info_Type => Debug.Space,
                                                For_Task => "all");
                                        when 'l' | 'L' =>
                                            -- Release all
                                            Debug.Release (Name => "all");  
                                        when 'n' | 'N' =>
                                            -- List tasks not running
                                            Debug.Task_Display
                                               (For_Task => "",
                                                Task_Set => Debug.Not_Running);
                                        when 'o' | 'O' =>
                                            -- Show holds
                                            Debug.Show
                                               (Values_For =>
                                                   Debug.Stops_And_Holds);
                                        when 'p' | 'P' =>
                                            -- List stopped
                                            Debug.Task_Display
                                               (For_Task => "",
                                                Task_Set => Debug.Stopped);
                                        when 't' | 'T' =>
                                            -- List all tasks
                                            Debug.Task_Display
                                               (For_Task => "",
                                                Task_Set => Debug.All_Tasks);
                                        when 'u' | 'U' =>
                                            -- List running tasks
                                            Debug.Task_Display
                                               (For_Task => "",
                                                Task_Set => Debug.Running);
                                        when 'x' | 'X' =>
                                            -- Show exceptions - all tasks
                                            Debug.Information
                                               (Info_Type => Debug.Exceptions,
                                                For_Task => "all");
                                        when 'z' | 'Z' =>
                                            -- Show rendezvous info - all tasks
                                            Debug.Information
                                               (Info_Type => Debug.Rendezvous,
                                                For_Task => "all");
                                        when others =>
                                            null;
                                    end case;
                                when 'w' | 'W' =>
                                    case Key4 is
                                        -- target frame
                                        when 'a' | 'A' =>
                                            -- Attach process
                                            Debug.Attach_Process
                                               (Name => "", Options => "");
                                        when 'c' | 'C' =>
                                            -- Connect
                                            Debug.Connect (Remote_Machine => "",
                                                           Target => "");
                                        when 'i' | 'I' =>
                                            -- invoke
                                            Menu_Operations.Dispatch (49);
                                        when 'r' | 'R' =>
                                            -- reconnect
                                            Debug.Reconnect;
                                        when 't' | 'T' =>
                                            -- target request
                                            Menu_Operations.Dispatch (50);
                                        when others =>
                                            null;
                                    end case;
                                when 'x' | 'X' =>
                                    -- Control / Context frame
                                    case Key4 is  
                                        when 'b' | 'B' =>
                                            -- Enable ...
                                            Menu_Operations.Dispatch (52);
                                        when 'c' | 'C' =>
                                            -- Set control context
                                            Menu_Operations.Debug.
                                               Context_Control;
                                        when 'd' | 'D' =>
                                            -- Disable ...
                                            Menu_Operations.Dispatch (53);  
                                        when 'e' | 'E' =>
                                            -- Set evaluation context
                                            Menu_Operations.Debug.
                                               Context_Evaluation;
                                        when 'p' | 'P' =>
                                            -- Clear stepping
                                            Debug.Clear_Stepping
                                               (For_Task => "");
                                        when 'r' | 'R' =>
                                            -- Reset to defaults
                                            Debug.Reset_Defaults;
                                        when 's' | 'S' =>
                                            -- Show evaluation context
                                            Debug.Show (Values_For =>
                                                           Debug.Contexts);
                                        when 't' | 'T' =>
                                            -- debug set ...
                                            Menu_Operations.Dispatch (51);
                                        when 'w' | 'W' =>
                                            -- show debug switches
                                            Debug.Show (Values_For =>
                                                           Debug.Flags);
                                        when others =>
                                            null;
                                    end case;  
                                when 'y' | 'Y' =>
                                    -- memory frame
                                    case Key4 is
                                        when 'a' | 'A' =>
                                            -- address to location
                                            Menu_Operations.Dispatch (47);
                                        when 'd' | 'D' =>
                                            -- Memory_Display
                                            Menu_Operations.Dispatch (54);
                                        when 'e' | 'E' =>
                                            -- exception to name
                                            Menu_Operations.Dispatch (48);
                                        when 'g' | 'G' =>
                                            -- Register_Modify
                                            Menu_Operations.Dispatch (57);
                                        when 'l' | 'L' =>
                                            -- location to address
                                            Menu_Operations.Dispatch (45);
                                        when 'o' | 'O' =>
                                            -- object address
                                            Menu_Operations.Dispatch (46);
                                        when 'r' | 'R' =>
                                            -- Register_Display
                                            Menu_Operations.Dispatch (55);  
                                        when 'y' | 'Y' =>
                                            -- Memory_Modify
                                            Menu_Operations.Dispatch (56);
                                        when others =>
                                            null;
                                    end case;
                                when 'z' | 'Z' =>
                                    -- exception frame
                                    case Key4 is  
                                        when 'a' | 'A' =>
                                            -- Forget all
                                            Debug.Forget (Name => "all",
                                                          In_Task => "",
                                                          At_Location => "");
                                        when 'c' | 'C' =>
                                            -- Catch...
                                            Menu_Operations.Dispatch (43);
                                        when 'f' | 'F' =>
                                            -- Forget ...
                                            Menu_Operations.Dispatch (42);
                                        when 'h' | 'H' =>
                                            -- Catch unlisted
                                            Debug.Catch (Name => "<selection>",
                                                         In_Task => "",
                                                         At_Location => "");
                                        when 'p' | 'P' =>
                                            -- Propagate ...
                                            Menu_Operations.Dispatch (44);
                                        when 'u' | 'U' =>
                                            -- Propagate unlisted
                                            Debug.Propagate (Name => "",
                                                             In_Task => "",
                                                             At_Location => "");
                                        when others =>
                                            null;
                                    end case;  
                                when others =>
                                    null;
                            end case;
                        when others =>
                            null;
                    end case;

                when M_P | Ms_P => -- Program/Compilation menu
                    case Key2 is
                        when 'f' | 'F' =>
                            Common.Format;
                        when 'm' | 'M' =>
                            Common.Complete;
                        when 'z' | 'Z' =>
                            Common.Semanticize;
                        when 'p' | 'P' =>
                            Menu_Operations.Compile.Promote;
                        when 'c' | 'C' =>
                            Menu_Operations.Dispatch (20);
                        when M_C | Ms_C =>
                            -- Menu_Operations.Compile.Code; -- JustDoIt Mode
                            Menu_Operations.Dispatch (113);
                        when 'i' | 'I' =>
                            Menu_Operations.Dispatch (21);
                        when M_I | Ms_I =>
                            -- Menu_Operations.Compile.Install; -- JustDoIt Mode
                            Menu_Operations.Dispatch (114);
                        when 's' | 'S' =>
                            --Menu_Operations.Compile.Source;
                            Menu_Operations.Dispatch (22);
                        when M_S | Ms_S =>
                            -- Menu_Operations.Compile.Source; -- JustDoIt Mode
                            Menu_Operations.Dispatch (115);
                        when 'd' | 'D' =>
                            Menu_Operations.Compile.Demote;
                        when 'e' | 'E' =>
                            --Menu_Operations.Compile.Install;
                            Menu_Operations.Dispatch (23);
                        when M_E | Ms_E =>
                            -- Menu_Operations.Compile.Install; -- JustDoIt Mode
                            Menu_Operations.Dispatch (116);
                        when 'o' | 'O' =>
                            --Menu_Operations.Compile.Source;
                            Menu_Operations.Dispatch (24);
                        when M_O | Ms_O =>
                            -- Menu_Operations.Compile.Source; -- JustDoIt Mode
                            Menu_Operations.Dispatch (117);
                        when 't' | 'T' =>
                            --Menu_Operations.Compile.Archive;
                            Menu_Operations.Dispatch (25);
                        when M_T | Ms_T =>
                            -- Menu_Operations.Compile.Archive; -- JustDoIt Mode
                            Menu_Operations.Dispatch (118);
                        when 'n' | 'N' =>
                            case Key3 is
                                when 'i' | 'I' =>
                                    -- compile incrementatl insert
                                    Menu_Operations.Dispatch (2);
                                when 'e' | 'E' =>
                                    -- compile incremental edit
                                    Menu_Operations.Dispatch (3);
                                when 'd' | 'D' =>
                                    -- compile incremental dispatch
                                    Menu_Operations.Dispatch (4);
                                when 'p' | 'P' =>
                                    -- compile incremental promote
                                    Menu_Operations.Dispatch (5);
                                when others =>
                                    null;
                            end case;
                        when 'u' | 'U' =>
                            Menu_Operations.Compile.Show_Usage;
                        when 'w' | 'W' =>
                            Menu_Operations.Compile.Show_Unused;
                        when 'b' | 'B' =>
                            case Key3 is
                                when 'l' | 'L' =>
                                    Menu_Operations.Compile.Load;
                                when 'f' | 'F' =>
                                    Menu_Operations.Compile.Parse;
                                when 'p' | 'P' =>
                                    Menu_Operations.Compile.Build_Private_Part;
                                when 'b' | 'B' =>
                                    Menu_Operations.Compile.Build_Body;
                                when 's' | 'S' =>
                                    Menu_Operations.Compile.Make_Separate;
                                when 'i' | 'I' =>
                                    Menu_Operations.Compile.Make_Inline;
                                when 'w' | 'W' =>
                                    Ada.Withdraw;
                                when others =>
                                    null;
                            end case;
                        when 'l' | 'L' =>
                            Menu_Operations.Compile.Options;
                        when others =>
                            null;
                    end case;

                when M_E | Ms_E => -- edit menu
                    case Key2 is
                        when 'a' | 'A' =>
                            -- add entry...
                            Common.Object.Insert;
                        when 'c' | 'C' =>
                            Editor.Hold_Stack.Push;
                        when 'd' | 'D' =>
                            -- delete entry...
                            Common.Object.Delete;
                        when 'e' | 'E' =>
                            -- edit entry...
                            Menu_Operations.Dispatch (17);
                        when 'f' | 'F' =>
                            -- fill...
                            Menu_Operations.Region.Fill;
                        when 'j' | 'J' =>
                            -- justify...
                            Menu_Operations.Region.Justify;
                        when 'l' | 'L' =>
                            -- deselect...
                            Editor.Set.Designation_Off;
                        when 'm' | 'M' =>
                            Menu_Operations.Region.Make_Comment;
                        when 'n' | 'N' =>
                            Menu_Operations.Edit.Underlines_Off;
                        when 'o' | 'O' =>
                            Menu_Operations.Region.Uncomment;
                        when 'p' | 'P' =>
                            Editor.Hold_Stack.Top;
                        when 'r' | 'R' =>
                            -- search/replace...
                            Menu_Operations.Dispatch (18);
                        when 's' | 'S' =>
                            -- spelling...
                            case Key3 is
                                when 'w' | 'W' =>
                                    Speller.Check_Text;
                                when 'i' | 'I' =>
                                    Speller.Check_Image;
                                when 'r' | 'R' =>
                                    Speller.Exchange_Word;
                                when 'a' | 'A' =>
                                    Speller.Learn_Word;
                                when 'l' | 'L' =>
                                    Speller.Learn_Replacement (The_Word => "",
                                                               Choice => 1,
                                                               Dictionary => 0);
                                when 'n' | 'N' =>
                                    Speller.Explain_Next;
                                when others =>
                                    null;
                            end case;
                        when 't' | 'T' =>
                            Editor.Region.Delete;
                        when 'u' | 'U' =>
                            Menu_Operations.Region.Uppercase;
                        when 'w' | 'W' =>
                            Menu_Operations.Region.Lowercase;
                        when 'y' | 'Y' =>
                            -- Typing Modes...
                            Menu_Operations.Dispatch (16);
                        when 'z' | 'Z' =>
                            Menu_Operations.Region.Capitalize;
                        when others =>
                            null;
                    end case;

                when M_F | Ms_F => -- File menu
                    case Key2 is
                        when 'n' | 'N' =>
                            case Key3 is
                                when 'f' | 'F' =>
                                    Menu_Operations.File.New_File;
                                when 'a' | 'A' =>
                                    Menu_Operations.File.New_Ada;
                                when 'w' | 'W' =>
                                    Menu_Operations.File.New_World;
                                when 'd' | 'D' =>
                                    Menu_Operations.File.New_Directory;
                                when 's' | 'S' =>
                                    Menu_Operations.File.New_Subsystem;
                                when 'v' | 'V' =>
                                    Menu_Operations.File.New_Working_View;
                                when 'p' | 'P' =>
                                    Menu_Operations.File.New_Spec_View;
                                when 'r' | 'R' =>
                                    Menu_Operations.File.New_Release_View;
                                when 'c' | 'C' =>
                                    Menu_Operations.File.New_Code_View;
                                when 't' | 'T' =>
                                    Menu_Operations.File.New_Switch_File;
                                when 'y' | 'Y' =>
                                    Menu_Operations.File.New_Activity;
                                when 'm' | 'M' =>
                                    Menu_Operations.File.New_Mailbox;
                                when 'u' | 'U' =>
                                    Menu_Operations.File.New_Venture;
                                when 'o' | 'O' =>
                                    Menu_Operations.File.New_Work_Order;
                                when 'l' | 'L' =>
                                    Menu_Operations.File.New_Work_Order_List;
                                when 'e' | 'E' =>
                                    Menu_Operations.File.New_System;
                                when others =>
                                    null;
                            end case;
                        when 'o' | 'O' =>
                            Menu_Operations.File.Open;
                        when 'b' | 'B' =>
                            -- file browse
                            Menu_Operations.Dispatch (1);
                        when 'c' | 'C' =>
                            Menu_Operations.File.Close;
                        when 's' | 'S' =>
                            Menu_Operations.File.Save;
                        when 'v' | 'V' =>
                            Menu_Operations.File.Revert;
                        when 'p' | 'P' =>
                            Menu_Operations.File.Print;
                        when M_P | Ms_P =>
                            Menu_Operations.Dispatch (110); -- JustDoIt mode
                        when 't' | 'T' =>
                            Menu_Operations.File.Properties;
                        when 'y' | 'Y' =>
                            Menu_Operations.File.Copy;
                        when 'm' | 'M' =>
                            Menu_Operations.File.Move;
                        when 'd' | 'D' =>
                            Menu_Operations.File.Delete;
                        when 'i' | 'I' =>
                            Menu_Operations.Edit.Insert_File;
                        when 'r' | 'R' =>
                            Menu_Operations.File.Run;
                        when 'e' | 'E' =>
                            -- windows quit
                            null;  
                        when 'q' | 'Q' =>  -- for S_F2 on F key palette
                            Common.Edit;
                        when others =>
                            null;
                    end case;

                when M_H | Ms_H => -- Help menu
                    case Key2 is
                        when 'u' | 'U' =>
                            Menu_Operations.Help.Explain_Underline;
                        when 'k' | 'K' =>
                            Editor.Key.Name (Key_Code => "");
                        when 'h' | 'H' =>
                            Menu_Operations.Help.On_Help;
                        when others =>
                            null;
                    end case;

                when M_M | Ms_M => -- CM menu
                    case Key2 is  
                        when 'o' | 'O' =>
                            Menu_Operations.Cm.Check_Out;
                        when M_O | Ms_O =>
                            Menu_Operations.Dispatch (111); -- JustDoIt Mode
                        when 'i' | 'I' =>
                            Menu_Operations.Cm.Check_In;
                        when M_I | Ms_I =>
                            Menu_Operations.Dispatch (112); -- JustDoIt Mode
                        when 'b' | 'B' =>
                            Menu_Operations.Cm.Abandon;
                        when 'a' | 'A' =>
                            Menu_Operations.Cm.Accept_Changes;
                        when M_A | Ms_A =>
                            Menu_Operations.Dispatch (119); -- JustDoIt Mode
                        when 'j' | 'J' =>
                            Menu_Operations.Cm.Join;
                        when 's' | 'S' =>
                            Menu_Operations.Cm.Sever;
                        when 'm' | 'M' =>
                            Menu_Operations.Cm.Imports;
                        when 'e' | 'E' =>
                            Menu_Operations.Cm.Properties;
                        when 'c' | 'C' =>
                            -- cm control
                            Menu_Operations.Dispatch (7);
                        when 'g' | 'G' =>
                            -- cm revert
                            Menu_Operations.Dispatch (8);
                        when 'r' | 'R' => -- report...
                            case Key3 is
                                when 'c' | 'C' =>
                                    Cmvc.Show_All_Controlled
                                       (In_View => "<CURSOR>");
                                when 'u' | 'U' =>
                                    Cmvc.Show_All_Uncontrolled
                                       (In_View => "<CURSOR>");
                                when 'd' | 'D' =>
                                    Cmvc.Show_Out_Of_Date_Objects;
                                when 'o' | 'O' =>
                                    Cmvc.Show_All_Checked_Out;
                                when 'i' | 'I' =>
                                    Cmvc.Information
                                       (For_View => "<CURSOR>",
                                        Show_Model => False,
                                        Show_Whether_Frozen => False,
                                        Show_View_Kind => False,
                                        Show_Creation_Time => False,
                                        Show_Imports => True,
                                        Show_Referencers => False,
                                        Show_Unit_Summary => False,
                                        Show_Controlled_Objects => False,
                                        Show_Last_Release_Numbers => False,
                                        Show_Path_Name => False,
                                        Show_Subpath_Name => False,
                                        Show_Switches => False,
                                        Show_Exported_Units => False,
                                        Response => "<PROFILE>");
                                when 'r' | 'R' =>
                                    Cmvc.Information
                                       (For_View => "<CURSOR>",
                                        Show_Model => False,
                                        Show_Whether_Frozen => False,
                                        Show_View_Kind => False,
                                        Show_Creation_Time => False,
                                        Show_Imports => False,
                                        Show_Referencers => True,
                                        Show_Unit_Summary => False,
                                        Show_Controlled_Objects => False,
                                        Show_Last_Release_Numbers => False,
                                        Show_Path_Name => False,
                                        Show_Subpath_Name => False,
                                        Show_Switches => False,
                                        Show_Exported_Units => False,
                                        Response => "<PROFILE>");

                                when 'e' | 'E' =>
                                    Cmvc.Information
                                       (For_View => "<CURSOR>",
                                        Show_Model => False,
                                        Show_Whether_Frozen => False,
                                        Show_View_Kind => False,
                                        Show_Creation_Time => False,
                                        Show_Imports => False,
                                        Show_Referencers => False,
                                        Show_Unit_Summary => False,
                                        Show_Controlled_Objects => False,
                                        Show_Last_Release_Numbers => False,
                                        Show_Path_Name => False,
                                        Show_Subpath_Name => False,
                                        Show_Switches => False,
                                        Show_Exported_Units => True,
                                        Response => "<PROFILE>");

                                when 'm' | 'M' =>
                                    Cmvc.Information
                                       (For_View => "<CURSOR>",
                                        Show_Model => True,
                                        Show_Whether_Frozen => False,
                                        Show_View_Kind => False,
                                        Show_Creation_Time => False,
                                        Show_Imports => False,
                                        Show_Referencers => False,
                                        Show_Unit_Summary => False,
                                        Show_Controlled_Objects => False,
                                        Show_Last_Release_Numbers => False,
                                        Show_Path_Name => False,
                                        Show_Subpath_Name => False,
                                        Show_Switches => False,
                                        Show_Exported_Units => False,
                                        Response => "<PROFILE>");
                                when 'h' | 'H' =>
                                    -- history box
                                    Menu_Operations.Dispatch (6);
                                when others =>
                                    null;
                            end case;
                        when 't' | 'T' =>
                            Activity.Edit;
                        when others =>
                            null;
                    end case;

                when M_O | Ms_O =>         -- Tools menu
                    case Key2 is
                        when 'c' | 'C' =>
                            case Key3 is
                                when 'b' | 'B' =>
                                    Editor.Macro.Start;
                                when 'e' | 'E' =>
                                    Editor.Macro.Finish;
                                when 'x' | 'X' =>
                                    Editor.Macro.Execute;
                                when 'k' | 'K' =>
                                    Editor.Macro.Bind (Key => "");
                                when others =>
                                    null;
                            end case;  
                        when 'd' | 'D' =>
                            -- RDF menu
                            case Key3 is
                                when 'd' | 'D' =>
                                    -- Pdl Definition
                                    Menu_Operations.Dispatch (70);
                                when 'e' | 'E' =>
                                    -- Pdl Enclosing
                                    Menu_Operations.Dispatch (71);
                                when 'u' | 'U' =>
                                    -- Pdl Show User
                                    Menu_Operations.Dispatch (72);
                                when 'x' | 'X' =>
                                    -- Pdl Explain
                                    Menu_Operations.Dispatch (73);
                                when 'c' | 'C' =>
                                    --Pdl Complete
                                    Menu_Operations.Dispatch (74);
                                when 'a' | 'A' =>
                                    -- Pdl Complete Optional
                                    Menu_Operations.Dispatch (75);
                                when 'k' | 'K' =>
                                    -- Target Key/Phase...
                                    Menu_Operations.Dispatch (76);
                                when 'g' | 'G' =>
                                    -- Generate Document...
                                    Menu_Operations.Dispatch (77);
                                when 'i' | 'I' =>
                                    -- Display Hierarchy...
                                    Menu_Operations.Dispatch (78);
                                when 'h' | 'H' =>
                                    -- Check Consistency...
                                    Menu_Operations.Dispatch (79);
                                when 'm' | 'M' =>
                                    -- Component Hierarchy...
                                    Menu_Operations.Dispatch (80);
                                when 'n' | 'N' =>
                                    -- New 2167A Component...
                                    Menu_Operations.Dispatch (81);
                                when others =>
                                    null;  
                            end case;
                        when 'f' | 'F' =>
                            case Key3 is
                                when 'n' | 'N' =>
                                    What.Object;
                                when 's' | 'S' | 'l' | 'L' =>
                                    Menu_Operations.Tools.Show_Locks;
                                when others =>
                                    null;
                            end case;
                        when 'i' | 'I' =>
                            -- insight submenu
                            case Key3 is
                                when 'i' | 'I' =>
                                    -- insight invoke
                                    Menu_Operations.Dispatch (60);
                                when 'c' | 'C' =>
                                    -- insight create
                                    Menu_Operations.Dispatch (61);
                                when 'd' | 'D' =>
                                    -- insight delete
                                    Menu_Operations.Dispatch (62);
                                when 'p' | 'P' =>
                                    -- insight print
                                    Menu_Operations.Dispatch (63);
                                when others =>
                                    null;
                            end case;
                        when 'm' | 'M' =>
                            case Key3 is
                                when 'r' | 'R' =>
                                    Menu_Operations.Tools.Read_Mail;
                                when 'n' | 'N' =>
                                    Mail.Send;
                                when 's' | 'S' =>
                                    Common.Promote;
                                when 'p' | 'P' =>
                                    Mail.Reply (To_All => False);
                                when 'a' | 'A' =>
                                    Mail.Reply (To_All => True);
                                when 'f' | 'F' =>
                                    Mail.Forward;
                                when 'm' | 'M' =>
                                    Mail.Remail;
                                when 'd' | 'D' =>
                                    Common.Object.Delete;
                                when 'u' | 'U' =>
                                    Common.Undo;
                                when 'c' | 'C' =>
                                    Common.Semanticize;
                                when 'e' | 'E' =>
                                    Mail.Expunge;
                                when 't' | 'T' =>
                                    -- mail sorting options...
                                    Menu_Operations.Dispatch (14);
                                when others =>
                                    null;
                            end case;
                        when 'o' | 'O' =>
                            case Key3 is
                                when 'b' | 'B' =>
                                    Menu_Operations.Tools.Operator_Backup;
                                when 'v' | 'V' =>
                                    Menu_Operations.Tools.
                                       Operator_Verify_Backup;
                                when 'h' | 'H' =>
                                    Menu_Operations.Tools.
                                       Operator_Backup_History;
                                when 'u' | 'U' =>
                                    Menu_Operations.Tools.Operator_Edit_User;
                                when 'g' | 'G' =>
                                    Menu_Operations.Tools.Operator_Edit_Group;
                                when 'f' | 'F' =>
                                    Menu_Operations.Tools.Operator_Force_Logoff;
                                when 'r' | 'R' =>
                                    Menu_Operations.Tools.System_Manager_Report;
                                when 's' | 'S' =>
                                    Menu_Operations.Tools.
                                       System_Manager_Shutdown;
                                when 'c' | 'C' =>
                                    Menu_Operations.Tools.
                                       System_Manager_Cancel_Shutdown;
                                when others =>
                                    null;
                            end case;
                        when 'p' | 'P' =>
                            -- RPI menu
                            case Key3 is
                                when 'p' | 'P' =>
                                    -- RPI put changes
                                    Menu_Operations.Dispatch (90);
                                when 'a' | 'A' =>
                                    -- RPI accept changes
                                    Menu_Operations.Dispatch (91);
                                when 'o' | 'O' =>
                                    -- show out of date
                                    Menu_Operations.Dispatch (92);
                                when 'e' | 'E' =>
                                    case Key4 is
                                        when 'd' | 'D' =>
                                            -- create doc gateway
                                            Menu_Operations.Dispatch (93);
                                        when 'v' | 'V' =>
                                            -- create view gateway
                                            Menu_Operations.Dispatch (94);
                                        when 'f' | 'F' =>
                                            -- create file gateway
                                            Menu_Operations.Dispatch (95);
                                        when 'g' | 'G' =>
                                            -- create graphic gateway
                                            Menu_Operations.Dispatch (96);
                                        when others =>
                                            null;
                                    end case;
                                when 'c' | 'C' =>
                                    -- RPI connect
                                    Menu_Operations.Dispatch (97);
                                when 'd' | 'D' =>
                                    -- RPI disconnect
                                    Menu_Operations.Dispatch (98);
                                when 'v' | 'V' =>
                                    -- Save archive
                                    Menu_Operations.Dispatch (99);
                                when 'r' | 'R' =>
                                    -- Restore archive
                                    Menu_Operations.Dispatch (100);
                                when others =>
                                    null;
                            end case;
                        when 's' | 'S' =>
                            case Key3 is
                                when 'u' | 'U' =>
                                    Menu_Operations.Session.Users;
                                when 'd' | 'D' =>
                                    Operator.Disk_Space;
                                when 'c' | 'C' =>
                                    Menu_Operations.Session.Machine_Information;
                                when 's' | 'S' =>
                                    What.Load;
                                when others =>
                                    null;
                            end case;  
                        when 't' | 'T' =>
                            -- RTI menu
                            case Key3 is
                                when 'm' | 'M' =>
                                    -- Import model
                                    Menu_Operations.Dispatch (120);
                                when 'a' | 'A' =>
                                    -- RTI accept changes
                                    Menu_Operations.Dispatch (121);
                                when 'p' | 'P' =>
                                    -- Prepare document
                                    Menu_Operations.Dispatch (122);
                                when 's' | 'S' =>
                                    -- show out of date
                                    Menu_Operations.Dispatch (123);
                                when 'b' | 'B' =>
                                    -- Baseline model
                                    Menu_Operations.Dispatch (124);
                                when 'i' | 'I' =>
                                    -- Increment Model
                                    Menu_Operations.Dispatch (125);
                                when 'd' | 'D' =>
                                    -- Destroy model
                                    Menu_Operations.Dispatch (126);
                                when 'o' | 'O' =>
                                    -- Options
                                    Menu_Operations.Dispatch (127);
                                when others =>
                                    null;
                            end case;
                        when others =>
                            null;
                    end case;


                when M_S | Ms_S => -- session menu
                    case Key2 is
                        when 'p' | 'P' =>
                            Menu_Operations.Session.Profile;
                        when 'l' | 'L' =>
                            Menu_Operations.Session.Search_List;
                        when 's' | 'S' =>
                            Menu_Operations.Session.Switches;
                        when 'j' | 'J' =>
                            case Key3 is
                                when 'j' | 'J' =>
                                    What.Users (False);
                                when 'a' | 'A' =>
                                    What.Users (True);
                                when 'd' | 'D' =>
                                    Menu_Operations.Session.Disable_Job;
                                when 'e' | 'E' =>
                                    Menu_Operations.Session.Enable_Job;
                                when 'k' | 'K' =>
                                    Menu_Operations.Session.Kill_Job;
                                when 'c' | 'C' =>
                                    -- job.connect
                                    Menu_Operations.Dispatch (15);
                                when others =>
                                    null;
                            end case;
                        when 'e' | 'E' =>
                            Menu_Operations.Session.End_Of_Input;
                        when 'n' | 'N' =>
                            case Key3 is
                                when 'h' | 'H' =>
                                    Menu_Operations.Tools.Screen_Push;
                                when 'p' | 'P' =>
                                    Menu_Operations.Tools.Screen_Pop;
                                when 'w' | 'W' =>
                                    -- set window frames
                                    Menu_Operations.Dispatch (13);
                                when others =>
                                    null;
                            end case;
                        when others =>
                            null;
                    end case;

                when M_I | Ms_I => -- Navigate menu
                    case Key2 is
                        when 'n' | 'N' =>
                            Editor.Cursor.Next (Repeat => 1,
                                                Prompt => False,
                                                Underline => True);
                        when 'p' | 'P' =>
                            Editor.Cursor.Previous (Repeat => 1,
                                                    Prompt => False,
                                                    Underline => True);  
                        when 'i' | 'I' =>
                            Menu_Operations.Traverse.Previous_Item;
                        when 'm' | 'M' =>
                            Menu_Operations.Traverse.Next_Item;
                        when 'd' | 'D' =>
                            Menu_Operations.Traverse.Definition;
                        when 'e' | 'E' =>
                            Menu_Operations.Traverse.Enclosing;
                        when 't' | 'T' =>
                            Menu_Operations.Region.Beginning_Of;
                        when 'b' | 'B' =>
                            Menu_Operations.Region.End_Of;
                        when 'o' | 'O' =>
                            Menu_Operations.Traverse.Other_Part;
                        when 'h' | 'H' =>
                            Menu_Operations.Traverse.Home_Library;
                        when 'r' | 'R' =>
                            Menu_Operations.Traverse.Resolve_Name;
                        when others =>
                            null;
                    end case;

                    -- Window panel buttons and other functions
                when Menu_Pick =>
                    case Key2 is
                        when 'b' =>
                            case Key3 is
                                when 'a' =>
                                    Editor.Window.Demote;
                                when 'b' =>
                                    Editor.Window.Delete;
                                when 'c' =>
                                    Editor.Image.End_Of;
                                when 'd' =>
                                    Editor.Window.Join (Repeat => 99);
                                when 'e' =>
                                    Editor.Image.Beginning_Of;
                                when 'f' =>
                                    Menu_Operations.Dispatch (19);
                                    -- Editor.Window.Promote;
                                    -- want to do this twice to ensure that the
                                    -- window is locked...
                                when 'g' =>
                                    Editor.Image.Left;
                                when 'h' =>
                                    Editor.Image.Right;
                                when 'i' =>
                                    Editor.Window.Copy;
                                when 'j' =>
                                    Editor.Window.Join;
                                when 'k' =>
                                    Editor.Window.Join (-1);
                                when 'l' =>
                                    Editor.Window.Expand;
                                when 'm' =>
                                    Editor.Window.Expand (-4);
                                when 'n' =>
                                    Editor.Window.Focus;
                                when 'o' =>
                                    Editor.Image.Down;
                                when 'p' =>
                                    Editor.Image.Up;
                                when 'q' =>
                                    -- dialog box completion
                                    Menu_Operations.Click_Ok;
                                when others =>
                                    null;
                            end case;
                        when 'c' =>
                            case Key3 is
                                when 'a' =>
                                    Menu_Operations.Load_Image_Palette;
                                when 'b' =>
                                    -- get version info
                                    Menu_Operations.Dispatch (9);
                                when others =>
                                    null;
                            end case;  
                        when 'q' =>
                            case Key3 is
                                when 'r' | 'R' =>
                                    -- for F? bar support
                                    Menu_Operations.Dispatch (12);
                                when 'p' | 'P' =>
                                    Editor.Key.Prompt (Key_Code => "");
                                when 'd' | 'D' =>
                                    Common.Definition (Name => "<CURSOR>",
                                                       In_Place => True,
                                                       Visible => True);
                                when 'c' | 'C' =>
                                    Common.Create_Command;
                                when 'e' | 'E' =>
                                    Common.Enclosing (In_Place => True,
                                                      Library => False);
                                when others =>
                                    null;  
                            end case;
                        when 'w' =>
                            case Key3 is
                                when '!' =>
                                    Editor.Window.Expand;
                                when '>' =>
                                    Editor.Window.Expand (-4);
                                when '?' =>
                                    Editor.Window.Directory;
                                when 'b' =>
                                    Editor.Window.Beginning_Of;
                                when 'c' =>
                                    Editor.Window.Copy;
                                when 'd' =>
                                    Editor.Window.Delete;
                                when 'e' =>
                                    Editor.Window.End_Of;
                                when 'f' =>
                                    Editor.Window.Focus;
                                when 'h' =>
                                    Common.Enclosing (In_Place => False,
                                                      Library => False);
                                when 'j' =>
                                    Editor.Window.Join (1);
                                when 'm' =>
                                    Editor.Window.Promote;
                                when 'n' =>
                                    Editor.Window.Next;
                                when 'o' =>
                                    Editor.Window.Join (-1);
                                when 't' =>
                                    Editor.Window.Transpose;
                                when 'u' =>
                                    Editor.Window.Previous;
                                when 'v' =>
                                    Editor.Window.Child;
                                when 'y' =>
                                    Editor.Window.Demote;
                                when 'l' =>
                                    Editor.Window.Parent;
                                when others =>
                                    null;
                            end case;
                        when 'i' =>
                            case Key3 is
                                when 'b' =>
                                    Editor.Image.Beginning_Of;
                                when 'e' =>
                                    Editor.Image.End_Of;
                                when 'f' =>
                                    Editor.Set.Fill_Mode (True);
                                when 'h' =>
                                    Editor.Image.Left;
                                when 'i' =>
                                    Editor.Set.Insert_Mode (True);
                                when 'j' =>
                                    Editor.Image.Right;
                                when 'n' =>
                                    Editor.Image.Down;
                                when 'o' =>
                                    Editor.Set.Insert_Mode (False);
                                when 'u' =>
                                    Editor.Image.Up;
                                when 'x' =>
                                    Editor.Set.Fill_Mode (False);
                                when others =>
                                    null;
                            end case;
                        when 'l' =>
                            case Key3 is
                                when '$' =>
                                    Editor.Line.Center;
                                when '<' =>
                                    Editor.Line.Lower_Case;
                                when '>' =>
                                    Editor.Line.Upper_Case;
                                when '?' =>
                                    What.Line;
                                when '^' =>
                                    Editor.Line.Capitalize;
                                when 'b' =>
                                    Editor.Line.Beginning_Of;
                                when 'c' =>
                                    Editor.Line.Copy;
                                when 'd' =>
                                    Editor.Line.Delete;
                                when 'e' =>
                                    Editor.Line.End_Of;
                                when 'i' =>
                                    Editor.Line.Insert (1);
                                when 'j' =>
                                    Editor.Line.Join;
                                when 'k' =>
                                    Editor.Line.Delete_Forward;
                                when 'o' =>
                                    Editor.Line.Open;
                                when 't' =>
                                    Editor.Line.Transpose;
                                when 'x' =>
                                    Editor.Line.Delete_Backward;
                                when others =>
                                    null;
                            end case;
                        when 'm' =>
                            case Key3 is
                                when 'a' =>
                                    Editor.Macro.Start;
                                when 'e' =>
                                    Editor.Macro.Finish;
                                when 'f' =>
                                    Editor.Macro.Bind;
                                when 'h' =>
                                    Editor.Mark.Previous;
                                when 'j' =>
                                    Editor.Mark.Next;
                                when 'x' =>
                                    Editor.Macro.Execute;
                                when 'n' =>
                                    Editor.Mark.Push;
                                when 'p' =>
                                    Editor.Mark.Copy_Top;
                                when 'r' =>
                                    Editor.Mark.Rotate;
                                when 't' =>
                                    Editor.Mark.Swap;
                                when 'u' =>
                                    Editor.Mark.Top;
                                when 'o' =>
                                    Editor.Mark.Delete_Top;
                                when others =>
                                    null;
                            end case;
                        when 'o' =>
                            case Key3 is
                                when '!' =>
                                    Common.Expand;
                                when '>' =>
                                    Common.Elide;
                                when '?' =>
                                    Common.Explain;
                                when 'c' =>
                                    Common.Object.Copy;
                                when 'd' =>
                                    Common.Object.Delete;
                                when 'e' =>
                                    Common.Object.Last_Child;
                                when 'g' =>
                                    Common.Abandon;
                                when 'h' =>
                                    Common.Object.Parent;
                                when 'i' =>
                                    Common.Object.Insert;
                                when 'j' =>
                                    Common.Object.Child;
                                when 'm' =>
                                    Common.Object.Move;
                                when 'n' =>
                                    Common.Object.Next;
                                when 'r' =>
                                    Common.Redo;
                                when 's' =>
                                    Common.Sort_Image;
                                when 'u' =>
                                    Common.Undo;
                                when 'x' =>
                                    Common.Release;
                                when 't' =>
                                    Editor.Char.Tab_To_Comment;
                                when 'f' =>
                                    Common.Commit;
                                when 'p' =>
                                    Common.Object.Previous;
                                when others =>
                                    null;
                            end case;
                        when 'r' =>
                            case Key3 is
                                when '^' =>
                                    Editor.Region.Capitalize;
                                when '[' =>
                                    Editor.Region.Start;
                                when ']' =>
                                    Editor.Region.Finish;
                                when '+' =>
                                    Editor.Region.Uncomment;
                                when '<' =>
                                    Editor.Region.Lower_Case;
                                when '-' =>
                                    Editor.Region.Comment;
                                when '>' =>
                                    Editor.Region.Upper_Case;
                                when 'b' =>
                                    Editor.Region.Beginning_Of;
                                when 'c' =>
                                    Editor.Region.Copy;
                                when 'd' =>
                                    Editor.Region.Delete;
                                when 'e' =>
                                    Editor.Region.End_Of;
                                when 'f' =>
                                    Editor.Region.Fill;
                                when 'h' =>
                                    Editor.Hold_Stack.Previous;
                                when 'j' =>
                                    Editor.Hold_Stack.Next;
                                when 'm' =>
                                    Editor.Region.Move;
                                when 'n' =>
                                    Editor.Hold_Stack.Push;
                                when 'p' =>
                                    Editor.Hold_Stack.Copy_Top;
                                when 'q' =>
                                    Editor.Region.Justify;
                                when 'r' =>
                                    Editor.Hold_Stack.Rotate;
                                when 't' =>
                                    Editor.Hold_Stack.Swap;
                                when 'u' =>
                                    Editor.Hold_Stack.Top;
                                when 'x' =>
                                    Editor.Region.Off;
                                when 'z' =>
                                    Editor.Hold_Stack.Delete_Top;
                                when others =>
                                    null;
                            end case;
                        when 'd' =>
                            case Key3 is
                                when '<' =>
                                    Editor.Word.Lower_Case;
                                when '>' =>
                                    Editor.Word.Upper_Case;
                                when '?' =>
                                    Speller.Check_Text (Data => "<TEXT>");
                                when '^' =>
                                    Editor.Word.Capitalize;
                                when 'b' =>
                                    Editor.Word.Beginning_Of;
                                when 'd' =>
                                    Editor.Word.Delete;
                                when 'e' =>
                                    Editor.Word.End_Of;
                                when 'i' =>
                                    Speller.Learn_Word
                                       (The_Word => "", Dictionary => 0);
                                when 'j' =>
                                    Editor.Word.Next;
                                when 'k' =>
                                    Editor.Word.Delete_Forward;
                                when 'm' =>
                                    Speller.Check_Image;
                                when 'n' =>
                                    Speller.Explain_Next;
                                when 'r' =>
                                    Speller.Learn_Replacement (The_Word => "",
                                                               Choice => 1,
                                                               Dictionary => 0);
                                when 't' =>
                                    Editor.Word.Transpose;
                                when 'W' =>
                                    Speller.Speller_Window (In_Place => True);
                                when 'x' =>
                                    Speller.Exchange_Word (Choice => 1);
                                when 'w' =>
                                    Speller.Speller_Window (In_Place => False);
                                when 'z' =>
                                    Editor.Word.Delete_Forward;
                                when others =>
                                    null;
                            end case;
                        when others =>
                            null;

                    end case;

                    -- Mouse button mapping

                when Mouse_Down =>
                    Editor.Screen.Down;
                when Mouse_Right =>
                    Editor.Screen.Right;
                when Mouse_Image_Down =>
                    Editor.Image.Down;
                when Mouse_Image_Right =>
                    Editor.Image.Right;
                when Mouse_Button1 =>
                    Editor.Set.Input_Logging_Off;
                when Mouse_Button1_Dbl =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => False, Visible => True);
                    -- when Mouse_Button2_Dbl =>
                    --     Common.Object.Parent (Repeat => 1);
                when Mouse_Button3 =>
                    Editor.Noop;
                when Mouse_Button3_Dbl =>
                    Common.Enclosing (In_Place => False, Library => False);
                when Mouse_Button4_Dbl =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => True, Visible => True);
                when Mouse_Button6_Dbl =>
                    Common.Enclosing (In_Place => True, Library => False);
                when Mouse_Button7 =>
                    Editor.Region.Start;
                when Mouse_Button7_Up =>
                    Editor.Region.Finish;
                when Mouse_Button7_Dbl =>
                    Common.Object.Parent (Repeat => 1);
                when Mouse_Button8 =>
                    Editor.Region.Copy;
                when Mouse_Button9 =>
                    Editor.Region.Finish;
                when Mouse_Button9_Dbl =>
                    Common.Object.Child (Repeat => 1);

                when Mouse_Minus =>
                    Editor.Set.Argument_Minus;
                when Mouse_0 =>
                    Editor.Set.Argument_Digit (Argument => 0);
                when Mouse_1 =>
                    Editor.Set.Argument_Digit (Argument => 1);
                when Mouse_2 =>
                    Editor.Set.Argument_Digit (Argument => 2);
                when Mouse_3 =>
                    Editor.Set.Argument_Digit (Argument => 3);
                when Mouse_4 =>
                    Editor.Set.Argument_Digit (Argument => 4);
                when Mouse_5 =>
                    Editor.Set.Argument_Digit (Argument => 5);
                when Mouse_6 =>
                    Editor.Set.Argument_Digit (Argument => 6);
                when Mouse_7 =>
                    Editor.Set.Argument_Digit (Argument => 7);
                when Mouse_8 =>
                    Editor.Set.Argument_Digit (Argument => 8);
                when Mouse_9 =>
                    Editor.Set.Argument_Digit (Argument => 9);


                when Menu_Return =>
                    Editor.Line.Insert (1);

                when X_No_Op =>
                    Editor.Noop;
                when X_Screen_Height =>
                    Editor.Screen.Set_Lines (24);
                when X_Screen_Width =>
                    Editor.Screen.Set_Columns (80);

                when others =>
                    null;
            end case;
    end case;

end Rational_Access_Commands;

E3 Meta Data

    nblk1=74
    nid=74
    hdr6=e6
        [0x00] rec0=33 rec1=00 rec2=01 rec3=032
        [0x01] rec0=1f rec1=00 rec2=02 rec3=034
        [0x02] rec0=19 rec1=00 rec2=03 rec3=00c
        [0x03] rec0=18 rec1=00 rec2=04 rec3=02c
        [0x04] rec0=15 rec1=00 rec2=05 rec3=030
        [0x05] rec0=15 rec1=00 rec2=06 rec3=086
        [0x06] rec0=17 rec1=00 rec2=07 rec3=030
        [0x07] rec0=14 rec1=00 rec2=08 rec3=038
        [0x08] rec0=14 rec1=00 rec2=09 rec3=072
        [0x09] rec0=17 rec1=00 rec2=0a rec3=026
        [0x0a] rec0=13 rec1=00 rec2=0b rec3=012
        [0x0b] rec0=14 rec1=00 rec2=0c rec3=04a
        [0x0c] rec0=17 rec1=00 rec2=0d rec3=024
        [0x0d] rec0=17 rec1=00 rec2=0e rec3=042
        [0x0e] rec0=15 rec1=00 rec2=0f rec3=030
        [0x0f] rec0=16 rec1=00 rec2=10 rec3=068
        [0x10] rec0=15 rec1=00 rec2=11 rec3=022
        [0x11] rec0=12 rec1=00 rec2=12 rec3=074
        [0x12] rec0=14 rec1=00 rec2=13 rec3=046
        [0x13] rec0=15 rec1=00 rec2=14 rec3=054
        [0x14] rec0=15 rec1=00 rec2=15 rec3=032
        [0x15] rec0=1a rec1=00 rec2=16 rec3=03a
        [0x16] rec0=15 rec1=00 rec2=17 rec3=030
        [0x17] rec0=19 rec1=00 rec2=18 rec3=042
        [0x18] rec0=18 rec1=00 rec2=19 rec3=022
        [0x19] rec0=18 rec1=00 rec2=1a rec3=016
        [0x1a] rec0=17 rec1=00 rec2=1b rec3=00a
        [0x1b] rec0=15 rec1=00 rec2=1c rec3=004
        [0x1c] rec0=16 rec1=00 rec2=1d rec3=03e
        [0x1d] rec0=19 rec1=00 rec2=1e rec3=048
        [0x1e] rec0=18 rec1=00 rec2=1f rec3=060
        [0x1f] rec0=12 rec1=00 rec2=20 rec3=03c
        [0x20] rec0=18 rec1=00 rec2=21 rec3=044
        [0x21] rec0=1c rec1=00 rec2=22 rec3=00e
        [0x22] rec0=10 rec1=00 rec2=23 rec3=046
        [0x23] rec0=19 rec1=00 rec2=24 rec3=03a
        [0x24] rec0=12 rec1=00 rec2=25 rec3=02c
        [0x25] rec0=0f rec1=00 rec2=26 rec3=048
        [0x26] rec0=10 rec1=00 rec2=27 rec3=046
        [0x27] rec0=10 rec1=00 rec2=28 rec3=00e
        [0x28] rec0=10 rec1=00 rec2=29 rec3=016
        [0x29] rec0=0f rec1=00 rec2=2a rec3=04a
        [0x2a] rec0=11 rec1=00 rec2=2b rec3=03c
        [0x2b] rec0=10 rec1=00 rec2=2c rec3=056
        [0x2c] rec0=10 rec1=00 rec2=2d rec3=062
        [0x2d] rec0=0f rec1=00 rec2=2e rec3=07a
        [0x2e] rec0=10 rec1=00 rec2=2f rec3=010
        [0x2f] rec0=0f rec1=00 rec2=30 rec3=02c
        [0x30] rec0=10 rec1=00 rec2=31 rec3=018
        [0x31] rec0=0f rec1=00 rec2=32 rec3=062
        [0x32] rec0=11 rec1=00 rec2=33 rec3=020
        [0x33] rec0=0f rec1=00 rec2=34 rec3=034
        [0x34] rec0=10 rec1=00 rec2=35 rec3=058
        [0x35] rec0=0f rec1=00 rec2=36 rec3=05e
        [0x36] rec0=10 rec1=00 rec2=37 rec3=088
        [0x37] rec0=0f rec1=00 rec2=38 rec3=070
        [0x38] rec0=14 rec1=00 rec2=39 rec3=04e
        [0x39] rec0=13 rec1=00 rec2=3a rec3=010
        [0x3a] rec0=11 rec1=00 rec2=3b rec3=018
        [0x3b] rec0=11 rec1=00 rec2=3c rec3=022
        [0x3c] rec0=12 rec1=00 rec2=3d rec3=03a
        [0x3d] rec0=15 rec1=00 rec2=3e rec3=042
        [0x3e] rec0=15 rec1=00 rec2=3f rec3=00e
        [0x3f] rec0=13 rec1=00 rec2=40 rec3=028
        [0x40] rec0=12 rec1=00 rec2=41 rec3=040
        [0x41] rec0=14 rec1=00 rec2=42 rec3=052
        [0x42] rec0=10 rec1=00 rec2=43 rec3=05e
        [0x43] rec0=13 rec1=00 rec2=44 rec3=068
        [0x44] rec0=14 rec1=00 rec2=45 rec3=048
        [0x45] rec0=17 rec1=00 rec2=46 rec3=086
        [0x46] rec0=13 rec1=00 rec2=47 rec3=04a
        [0x47] rec0=13 rec1=00 rec2=48 rec3=00a
        [0x48] rec0=0e rec1=00 rec2=49 rec3=088
        [0x49] rec0=10 rec1=00 rec2=4a rec3=00a
        [0x4a] rec0=10 rec1=00 rec2=4b rec3=012
        [0x4b] rec0=10 rec1=00 rec2=4c rec3=040
        [0x4c] rec0=13 rec1=00 rec2=4d rec3=05a
        [0x4d] rec0=14 rec1=00 rec2=4e rec3=06e
        [0x4e] rec0=12 rec1=00 rec2=4f rec3=00c
        [0x4f] rec0=10 rec1=00 rec2=50 rec3=046
        [0x50] rec0=14 rec1=00 rec2=51 rec3=04a
        [0x51] rec0=13 rec1=00 rec2=52 rec3=03c
        [0x52] rec0=12 rec1=00 rec2=53 rec3=04c
        [0x53] rec0=12 rec1=00 rec2=54 rec3=040
        [0x54] rec0=12 rec1=00 rec2=55 rec3=034
        [0x55] rec0=10 rec1=00 rec2=56 rec3=050
        [0x56] rec0=11 rec1=00 rec2=57 rec3=048
        [0x57] rec0=14 rec1=00 rec2=58 rec3=022
        [0x58] rec0=11 rec1=00 rec2=59 rec3=056
        [0x59] rec0=16 rec1=00 rec2=5a rec3=03e
        [0x5a] rec0=12 rec1=00 rec2=5b rec3=044
        [0x5b] rec0=16 rec1=00 rec2=5c rec3=00a
        [0x5c] rec0=11 rec1=00 rec2=5d rec3=03e
        [0x5d] rec0=15 rec1=00 rec2=5e rec3=072
        [0x5e] rec0=13 rec1=00 rec2=5f rec3=006
        [0x5f] rec0=13 rec1=00 rec2=60 rec3=02a
        [0x60] rec0=13 rec1=00 rec2=61 rec3=01a
        [0x61] rec0=12 rec1=00 rec2=62 rec3=030
        [0x62] rec0=12 rec1=00 rec2=63 rec3=066
        [0x63] rec0=14 rec1=00 rec2=64 rec3=054
    tail 0x215352ac885d446e15c60 0x42a00088462060003
Free Block Chain:
  0x74: 0000  00 00 09 80 32 84 81 50 06 60 0c 26 00 ce 1b 85  ┆    2  P ` &    ┆