! Translations
!
! Many of these translations are duplicated on both "Meta" and "Alt", since
! X has this stupid notion that "Meta" and "Alt" are not synonymous, and
! Sun in their infinite wisdom furthers this confusing lossage by both having
! Meta *and* Alt keys on the keyboard, and having the key which is labelled
! Alt generate *META* (the Diamond keys generate Alt.)  All praise Sun!
! All praise the X keyboard model!
!
! And because of the need to do this, we have to do all of the keyboard
! equivalents with "translations" instead of "accelerators", since a menu
! item can only have one accelerator, and in order to make both Meta and Alt
! work we need to give them each two.  All praise Motif!


! Keybindings in the main window which correspond to menu items.
! These are installed on every widget which is a child of our Shell,
! and are not installed on popups/transients.
!
*globalTranslations:                    #override                             \
                                                                              \
     m    ~c <Key>A:            xfeDoCommand(selectAll)                     \n\
        a ~c <Key>A:            xfeDoCommand(selectAll)                     \n\
     m    ~c <Key>B:            xfeDoCommand(openBookmarks)                 \n\
        a ~c <Key>B:            xfeDoCommand(openBookmarks)                 \n\
     m    ~c <Key>C:            xfeDoCommand(copy)                          \n\
        a ~c <Key>C:            xfeDoCommand(copy)                          \n\
     m    ~c <Key>D:                    undefined-key()                     \n\
        a ~c <Key>D:                    undefined-key()                     \n\
     m    ~c <Key>E:                    undefined-key()                     \n\
        a ~c <Key>E:                    undefined-key()                     \n\
     m    ~c <Key>F:                    undefined-key()                     \n\
        a ~c <Key>F:                    undefined-key()                     \n\
     m    ~c <Key>G:                    undefined-key()                     \n\
        a ~c <Key>G:                    undefined-key()                     \n\
     m    ~c <Key>H:            xfeDoCommand(openHistory)                   \n\
        a ~c <Key>H:            xfeDoCommand(openHistory)                   \n\
     m    ~c <Key>I:                    undefined-key()                     \n\
        a ~c <Key>I:                    undefined-key()                     \n\
     m    ~c <Key>J:                    undefined-key()                     \n\
        a ~c <Key>J:                    undefined-key()                     \n\
     m    ~c <Key>K:            xfeDoCommand(addBookmark)                   \n\
        a ~c <Key>K:            xfeDoCommand(addBookmark)                   \n\
     m    ~c <Key>L:                    undefined-key()                     \n\
        a ~c <Key>L:                    undefined-key()                     \n\
     m    ~c <Key>m:            xfeDoCommand(composeMessage)                \n\
        a ~c <Key>m:            xfeDoCommand(composeMessage)                \n\
 ~s  m    ~c <Key>n:            xfeDoCommand(openBrowser)                   \n\
 ~s     a ~c <Key>n:            xfeDoCommand(openBrowser)                   \n\
  s  m    ~c <Key>n:            xfeDoCommand(newBlank)                      \n\
  s     a ~c <Key>n:            xfeDoCommand(newBlank)                      \n\
     m    ~c <Key>O:                    undefined-key()                     \n\
        a ~c <Key>O:                    undefined-key()                     \n\
     m    ~c <Key>P:                    undefined-key()                     \n\
        a ~c <Key>P:                    undefined-key()                     \n\
     m    ~c <Key>Q:            xfeDoCommand(exit)                          \n\
        a ~c <Key>Q:            xfeDoCommand(exit)                          \n\
     m    ~c <Key>R:                    undefined-key()                     \n\
        a ~c <Key>R:                    undefined-key()                     \n\
     m    ~c <Key>S:            xfeDoCommand(saveAs)                        \n\
        a ~c <Key>S:            xfeDoCommand(saveAs)                        \n\
     m    ~c <Key>T:                    undefined-key()                     \n\
        a ~c <Key>T:                    undefined-key()                     \n\
     m    ~c <Key>U:                    undefined-key()                     \n\
        a ~c <Key>U:                    undefined-key()                     \n\
     m    ~c <Key>V:            xfeDoCommand(paste)                         \n\
        a ~c <Key>V:            xfeDoCommand(paste)                         \n\
     m    ~c <Key>W:            xfeDoCommand(close)                         \n\
        a ~c <Key>W:            xfeDoCommand(close)                         \n\
     m    ~c <Key>X:            xfeDoCommand(cut)                           \n\
        a ~c <Key>X:            xfeDoCommand(cut)                           \n\
     m    ~c <Key>Y:            xfeDoCommand(paste)                         \n\
        a ~c <Key>Y:            xfeDoCommand(paste)                         \n\
     m    ~c <Key>Z:                    undefined-key()                     \n\
        a ~c <Key>Z:                    undefined-key()                     \n\
                                                                              \
 ~s  m    ~c <Key>1:            xfeDoCommand(openOrBringUpBrowser)          \n\
 ~s     a ~c <Key>1:            xfeDoCommand(openOrBringUpBrowser)          \n\
  s  m    ~c <Key>1:            xfeDoCommand(openFolders)                   \n\
  s     a ~c <Key>1:            xfeDoCommand(openFolders)                   \n\
 ~s  m    ~c <Key>2:            xfeDoCommand(openInbox)                     \n\
 ~s     a ~c <Key>2:            xfeDoCommand(openInbox)                     \n\
  s  m    ~c <Key>2:            xfeDoCommand(openAddrBook)                  \n\
  s     a ~c <Key>2:            xfeDoCommand(openAddrBook)                  \n\
     m    ~c <Key>3:            xfeDoCommand(openNewsgroups)                \n\
        a ~c <Key>3:            xfeDoCommand(openNewsgroups)                \n\
     m    ~c <Key>4:            xfeDoCommand(openEditor)                    \n\
        a ~c <Key>4:            xfeDoCommand(openEditor)                    \n\
     m    ~c <Key>5:            xfeDoCommand(openConference)                \n\
        a ~c <Key>5:            xfeDoCommand(openConference)                \n\
     m    ~c <Key>6:            xfeDoCommand(openCalendar)                  \n\
        a ~c <Key>6:            xfeDoCommand(openCalendar)                  \n\
     m    ~c <Key>7:            xfeDoCommand(openHostOnDemand)              \n\
        a ~c <Key>7:            xfeDoCommand(openHostOnDemand)              \n\
     m    ~c <Key>8:            xfeDoCommand(openNetcaster)                 \n\
        a ~c <Key>8:            xfeDoCommand(openNetcaster)                 \n\
                                                                              \
    ~m ~a ~c <Key>Prior:        PageUp()                                    \n\
    ~m ~a ~c <Key>Next:         PageDown()                                  \n\
    ~m ~a ~c <Key>osfPageUp:    PageUp()                                    \n\
    ~m ~a ~c <Key>osfPageDown:  PageDown()                                  \n\
                                                                              \
    ~m ~a ~c <Key>SunCopy:      xfeDoCommand(copy)                          \n\
    ~m ~a ~c <Key>SunPaste:     xfeDoCommand(paste)                         \n\
    ~m ~a ~c <Key>SunCut:       xfeDoCommand(cut)                           \n\
                                                                              \
 ~s ~m ~a ~c <Key>osfHelp:      xfeDoCommand(manual)                        \n

! These used to be up above.
!    Meta ~Ctrl<Key>Z:        undo()                        \n\
!     Alt ~Ctrl<Key>Z:        undo()                        \n\


! These keysyms are apparently an R6ism.
!    ~Meta ~Alt ~Ctrl<Key>KP_Prior:        PageUp()                \n\
!    ~Meta ~Alt ~Ctrl<Key>KP_Next:        PageDown()                \n\

! Translations in the Navigator window.
*browserGlobalTranslations:             #override                             \
     m    ~c <Key>F:            xfeDoCommand(findInObject)                  \n\
        a ~c <Key>F:            xfeDoCommand(findInObject)                  \n\
     m    ~c <Key>G:            xfeDoCommand(findAgain)                     \n\
        a ~c <Key>G:            xfeDoCommand(findAgain)                     \n\
 ~s  m    ~c <Key>i:            xfeDoCommand(showImages)                    \n\
 ~s     a ~c <Key>i:            xfeDoCommand(showImages)                    \n\
  s  m    ~c <Key>i:            xfeDoCommand(viewSecurity)                  \n\
  s     a ~c <Key>i:            xfeDoCommand(viewSecurity)                  \n\
     m    ~c <Key>L:            xfeDoCommand(openPage)                      \n\
        a ~c <Key>L:            xfeDoCommand(openPage)                      \n\
 ~s  m    ~c <Key>o:            xfeDoCommand(openPage)                      \n\
 ~s     a ~c <Key>o:            xfeDoCommand(openPage)                      \n\
  s  m    ~c <Key>o:            xfeDoCommand(openPageChooseFile)            \n\
  s     a ~c <Key>o:            xfeDoCommand(openPageChooseFile)            \n\
     m    ~c <Key>P:            xfeDoCommand(print)                         \n\
        a ~c <Key>P:            xfeDoCommand(print)                         \n\
     m    ~c <Key>R:            xfeDoCommand(reload)                        \n\
        a ~c <Key>R:            xfeDoCommand(reload)                        \n\
     m    ~c <Key>minus:        xfeDoCommand(decreaseFont)                  \n\
        a ~c <Key>minus:        xfeDoCommand(decreaseFont)                  \n\
     m    ~c <Key>plus:         xfeDoCommand(increaseFont)                  \n\
        a ~c <Key>plus:         xfeDoCommand(increaseFont)                  \n\
                                                                              \
     m    ~c <Key>osfLeft:      xfeDoCommand(back)                          \n\
        a ~c <Key>osfLeft:      xfeDoCommand(back)                          \n\
     m    ~c <Key>osfRight:     xfeDoCommand(forward)                       \n\
        a ~c <Key>osfRight:     xfeDoCommand(forward)                       \n\
             <Key>Escape:       xfeDoCommand(stopLoading)                   \n\
             <Key>osfCancel:    xfeDoCommand(stopLoading)                   \n

! Translations in the Mail & News window.
! Things here override the global translations (which are loaded first.)
! This changes:
!    Alt+H from "View History" to "Deliver Mail Now"
!    Alt+L from "Open URL" to "Forward Message"
!    Alt+R from "Reload" to "Reply to Sender"
!    Alt+O from "Open File" to undefined
!    Alt+S from "Save As" to undefined
!
! This adds:
!    Alt+Shift+A for "Select Thread"
!    Alt+T for "Get New Mail"
!    Alt+Shift+R for "Reply to All"
!    Alt+D for "Delete Message"
!    Alt+Y for "Redo"
!
! Alt arrow keys select previous/next.
! Alt+Shift arrow keys select previous/next unread.
! Meta+Shift arrow keys select previous/next marked.
!
*mailnewsGlobalTranslations:            #override                             \
             <Btn3Down>:        xfeDoPopup()                                \n\
     m    ~c <Key>D:            xfeDoCommand(deleteFolder)                  \n\
        a ~c <Key>D:            xfeDoCommand(deleteFolder)                  \n\
     m    ~c <Key>H:            xfeDoCommand(deliverQueuedMessages)         \n\
        a ~c <Key>H:            xfeDoCommand(deliverQueuedMessages)         \n\
     m    ~c <Key>K:            xfeDoCommand(compressFolders)               \n\
        a ~c <Key>K:            xfeDoCommand(compressFolders)               \n\
  s  m    ~c <Key>f:            xfeDoCommand(search)                        \n\
  s     a ~c <Key>f:            xfeDoCommand(search)                        \n\
  s  m    ~c <Key>i:            xfeDoCommand(viewSecurity)                  \n\
  s     a ~c <Key>i:            xfeDoCommand(viewSecurity)                  \n\
     m    ~c <Key>O:            xfeDoCommand(openSelected)                  \n\
        a ~c <Key>O:            xfeDoCommand(openSelected)                  \n\
 ~s ~m ~a ~c <Key>Return:       xfeDoCommand(openSelected)                  \n\
 ~s ~m ~a ~c <Key>osfActivate:  xfeDoCommand(openSelected)                  \n\
     m    ~c <Key>T:            xfeDoCommand(getNewMessages)                \n\
        a ~c <Key>T:            xfeDoCommand(getNewMessages)                \n\
     m    ~c <Key>Z:            xfeDoCommand(undo)                          \n\
             <Key>Escape:       xfeDoCommand(stopLoading)                   \n

! Translations in the MailNews message and threads windows
! These override globalTranslations.
*messagewinGlobalTranslations:          #override                             \
             <Btn3Down>:        xfeDoPopup()                                \n\
     m    ~c <Key>D:            xfeDoCommand(deleteMessage)                 \n\
        a ~c <Key>D:            xfeDoCommand(deleteMessage)                 \n\
  s  m    ~c <Key>i:            xfeDoCommand(viewSecurity)                  \n\
  s     a ~c <Key>i:            xfeDoCommand(viewSecurity)                  \n\
     m    ~c <Key>F:            xfeDoCommand(findInObject)                  \n\
        a ~c <Key>F:            xfeDoCommand(findInObject)                  \n\
     m    ~c <Key>G:            xfeDoCommand(findAgain)                     \n\
        a ~c <Key>G:            xfeDoCommand(findAgain)                     \n\
     m    ~c <Key>K:            xfeDoCommand(compressFolders)               \n\
        a ~c <Key>K:            xfeDoCommand(compressFolders)               \n\
     m    ~c <Key>L:            xfeDoCommand(forwardMessage)                \n\
        a ~c <Key>L:            xfeDoCommand(forwardMessage)                \n\
     m    ~c <Key>O:            xfeDoCommand(openSelected)                  \n\
        a ~c <Key>O:            xfeDoCommand(openSelected)                  \n\
     m    ~c <Key>P:            xfeDoCommand(print)                         \n\
        a ~c <Key>P:            xfeDoCommand(print)                         \n\
 ~s  m    ~c <Key>r:            xfeDoCommand(replyToSender)                 \n\
 ~s     a ~c <Key>r:            xfeDoCommand(replyToSender)                 \n\
  s  m    ~c <Key>r:            xfeDoCommand(replyToAll)                    \n\
  s     a ~c <Key>r:            xfeDoCommand(replyToAll)                    \n\
     m    ~c <Key>S:            xfeDoCommand(saveMessagesAs)                \n\
        a ~c <Key>S:            xfeDoCommand(saveMessagesAs)                \n\
     m    ~c <Key>T:            xfeDoCommand(getNewMessages)                \n\
        a ~c <Key>T:            xfeDoCommand(getNewMessages)                \n\
     m    ~c <Key>Y:            xfeDoCommand(redo)                          \n\
        a ~c <Key>Y:            xfeDoCommand(redo)                          \n\
     m    ~c <Key>Z:            xfeDoCommand(undo)                          \n\
        a ~c <Key>Z:            xfeDoCommand(undo)                          \n\
                                                                              \
 ~s  m    ~c <Key>Up:           xfeDoCommand(previousMessage)               \n\
 ~s     a ~c <Key>Up:           xfeDoCommand(previousMessage)               \n\
 ~s  m    ~c <Key>osfUp:        xfeDoCommand(previousMessage)               \n\
 ~s     a ~c <Key>osfUp:        xfeDoCommand(previousMessage)               \n\
 ~s  m    ~c <Key>Down:         xfeDoCommand(nextMessage)                   \n\
 ~s     a ~c <Key>Down:         xfeDoCommand(nextMessage)                   \n\
 ~s  m    ~c <Key>osfDown:      xfeDoCommand(nextMessage)                   \n\
 ~s     a ~c <Key>osfDown:      xfeDoCommand(nextMessage)                   \n\
 ~s  m    ~c <Key>[:            xfeDoCommand(back)                          \n\
 ~s     a ~c <Key>[:            xfeDoCommand(back)                          \n\
 ~s  m    ~c <Key>]:            xfeDoCommand(forward)                       \n\
 ~s     a ~c <Key>]:            xfeDoCommand(forward)                       \n\
                                                                              \
  s  m    ~c <Key>Up:           xfeDoCommand(previousUnreadMessage)         \n\
  s     a ~c <Key>Up:           xfeDoCommand(previousUnreadMessage)         \n\
  s  m    ~c <Key>osfUp:        xfeDoCommand(previousUnreadMessage)         \n\
  s     a ~c <Key>osfUp:        xfeDoCommand(previousUnreadMessage)         \n\
  s  m    ~c <Key>Down:         xfeDoCommand(nextUnreadMessage)             \n\
  s     a ~c <Key>Down:         xfeDoCommand(nextUnreadMessage)             \n\
  s  m    ~c <Key>osfDown:      xfeDoCommand(nextUnreadMessage)             \n\
  s     a ~c <Key>osfDown:      xfeDoCommand(nextUnreadMessage)             \n\
                                                                              \
  s        c <Key>Up:           xfeDoCommand(previousFlaggedMessage)        \n\
  s        c <Key>osfUp:        xfeDoCommand(previousFlaggedMessage)        \n\
  s        c <Key>Down:         xfeDoCommand(nextFlaggedMessage)            \n\
  s        c <Key>osfDown:      xfeDoCommand(nextFlaggedMessage)            \n\
                                                                              \
 ~s ~m ~a ~c <Key>Return:       xfeDoCommand(openSelected)                  \n\
 ~s ~m ~a ~c <Key>osfActivate:  xfeDoCommand(openSelected)                  \n\
                                                                              \
  s ~m ~a ~c <Key>8:            xfeDoCommand(expandAll)                     \n\
    ~m ~a ~c <Key>plus:         xfeDoCommand(expand)                        \n\
 ~s ~m ~a ~c <Key>slash:        xfeDoCommand(collapseAll)                   \n\
 ~s ~m ~a ~c <Key>minus:        xfeDoCommand(collapse)                      \n\
                                                                              \
    ~m ~a    <Key>M:            xfeDoCommand(markMessageRead)               \n\
    ~m ~a    <Key>U:            xfeDoCommand(markMessageUnread)             \n\
    ~m ~a    <Key>T:            xfeDoCommand(markThreadRead)                \n\
    ~m ~a    <Key>G:            xfeDoCommand(markAllMessagesRead)           \n\
    ~m ~a    <Key>D:            xfeDoCommand(markMessageByDate)             \n\
    ~m ~a    <Key>L:            xfeDoCommand(markMessageForLater)           \n\
    ~m ~a    <Key>K:            xfeDoCommand(ignoreThread)                  \n\
    ~m ~a    <Key>W:            xfeDoCommand(watchThread)                   \n\
 ~s     a ~c <Key>BackSpace:    xfeDoCommand(deleteMessage)                 \n\
 ~s  m    ~c <Key>BackSpace:    xfeDoCommand(deleteMessage)                 \n\
 ~s     a ~c <Key>osfBackSpace: xfeDoCommand(deleteMessage)                 \n\
 ~s  m    ~c <Key>osfBackSpace: xfeDoCommand(deleteMessage)                 \n



! Translations in the MailCompose window.
! These are used instead of globalTranslations.
!
*mailcomposeGlobalTranslations:         #override                             \
                                                                              \
             <Btn3Down>:        xfeDoPopup()                                \n\
     m    ~c <Key>D:            xfeDoCommand(delete)                        \n\
        a ~c <Key>D:            xfeDoCommand(delete)                        \n\
  s  m    ~c <Key>i:            xfeDoCommand(viewSecurity)                  \n\
  s     a ~c <Key>i:            xfeDoCommand(viewSecurity)                  \n\
     m    ~c <Key>Return:       xfeDoCommand(sendMessageNow)                \n\
        a ~c <Key>Return:       xfeDoCommand(sendMessageNow)                \n

! Translations in the AddressOutliner portion of the compose window:
!
! TraverseTranslations are for the recipient text field:
*addressOutlinerTraverseTranslations:   #override                             \
:~s       ~c <Key>osfDelete:    TableTraverse(DELETE)                       \n\
:~s       ~c <Key>Delete:       TableTraverse(DELETE)                       \n\
:~s       ~c <Key>BackSpace:    TableTraverse(BACKSPACE)                    \n\
:~s       ~c <Key>osfBackSpace: TableTraverse(BACKSPACE)                    \n\
 ~s       ~c <Key>osfRight:     TableTraverse(RIGHT)                        \n\
 ~s       ~c <Key>osfLeft:      TableTraverse(LEFT)                         \n\
             <Key>osfInsert:    TableTraverse(INSERT)                       \n\
 ~s       ~c <Key>Insert:       TableTraverse(INSERT)                       \n\
 ~s       ~c <Key>osfBeginLine: TableTraverse(HOME)                         \n\
 ~s       ~c <Key>Home:         TableTraverse(HOME)                         \n\
 ~s       ~c <Key>End:          TableTraverse(END)                          \n\
 ~s       ~c <Key>osfEndLine:   TableTraverse(END)                          \n\
 ~s       ~c <Key>osfUp:        TableTraverse(UP)                           \n\
 ~s       ~c <Key>osfDown:      TableTraverse(DOWN)                         \n\
 ~s       ~c <Key>Tab:          TableTraverse(NEXT)                         \n\
  s       ~c <Key>Tab:          TableTraverse(PREVIOUS)                     \n

! KeyTranslations are for the To/Cc/etc. field:
*addressOutlinerKeyTranslations:        #override                             \
 ~s       ~c <Key>osfRight:     TableTraverse(RIGHT)                        \n\
 ~s       ~c <Key>osfLeft:      TableTraverse(LEFT)                         \n\
 ~s       ~c <Key>osfDelete:    TableTraverse(DELETE)                       \n\
 ~s       ~c <Key>Delete:       TableTraverse(DELETE)                       \n\
             <Key>osfInsert:    TableTraverse(INSERT)                       \n\
 ~s       ~c <Key>Insert:       TableTraverse(INSERT)                       \n\
 ~s       ~c <Key>osfBeginLine: TableTraverse(HOME)                         \n\
 ~s       ~c <Key>Home:         TableTraverse(HOME)                         \n\
 ~s       ~c <Key>End:          TableTraverse(END)                          \n\
 ~s       ~c <Key>osfEndLine:   TableTraverse(END)                          \n\
 ~s       ~c <Key>osfUp:        TableTraverse(UP)                           \n\
 ~s       ~c <Key>osfDown:      TableTraverse(DOWN)                         \n\
 ~s       ~c <Key>Tab:          TableTraverse(NEXT)                         \n\
  s       ~c <Key>Tab:          TableTraverse(PREVIOUS)                     \n\
 ~s       ~c <Key>t:            KeyIn(To:)                                  \n\
  s       ~c <Key>t:            KeyIn(To:)                                  \n\
 ~s       ~c <Key>c:            KeyIn(Cc:)                                  \n\
  s       ~c <Key>c:            KeyIn(Cc:)                                  \n\
 ~s       ~c <Key>b:            KeyIn(Bcc:)                                 \n\
  s       ~c <Key>b:            KeyIn(Bcc:)                                 \n\
 ~s       ~c <Key>n:            KeyIn(Newsgroup:)                           \n\
  s       ~c <Key>n:            KeyIn(Newsgroup:)                           \n\
 ~s       ~c <Key>f:            KeyIn(Followup To:)                         \n\
  s       ~c <Key>f:            KeyIn(Followup To:)                         \n\
 ~s       ~c <Key>r:            KeyIn(Reply To:)                            \n\
  s       ~c <Key>r:            KeyIn(Reply To:)                            \n

! Translations in the MailNews Search window.
! These are used instead of globalTranslations.
!
*mnsearchGlobalTranslations:            #override                             \
             <Btn3Down>:        xfeDoPopup()                                \n\
     m    ~c <Key>D:            xfeDoCommand(deleteMessage)                 \n\
        a ~c <Key>D:            xfeDoCommand(deleteMessage)                 \n

! Translations in the Bookmarks and Adderssbook window.
! These translations are used instead of globalTranslations.
! None of the key *semantics* of globalTranslations are changed here,
! only the actions bound.  (And inapplicable actions are not present.)
!
*navcenterGlobalTranslations            #override                             \
    ~m ~a ~c <Key>space:        PageDown()                                  \n\
     m    ~c <Key>D:            xfeDoCommand(delete)                        \n\
        a ~c <Key>D:            xfeDoCommand(delete)                        \n\
     m    ~c <Key>F:            xfeDoCommand(findInObject)                  \n\
        a ~c <Key>F:            xfeDoCommand(findInObject)                  \n\
     m    ~c <Key>G:            xfeDoCommand(findAgain)                     \n\
        a ~c <Key>G:            xfeDoCommand(findAgain)                     \n\
     m    ~c <Key>O:            xfeDoCommand(openSelected)                  \n\
        a ~c <Key>O:            xfeDoCommand(openSelected)                  \n\
 ~s ~m ~a ~c <Key>Up:           LineUp()                                    \n\
 ~s ~m ~a ~c <Key>Down:         LineDown()                                  \n\
 ~s ~m ~a ~c <Key>osfUp:        LineUp()                                    \n\
 ~s ~m ~a ~c <Key>osfDown:      LineDown()                                  \n\
    ~m ~a ~c <Key>Prior:        PageUp()                                    \n\
    ~m ~a ~c <Key>Next:         PageDown()                                  \n\
    ~m ~a ~c <Key>osfPageUp:    PageUp()                                    \n\
    ~m ~a ~c <Key>osfPageDown:  PageDown()                                  \n

! These used to be in the bookmark translations.  navcenter probably
! should have equivalents
! s ~m ~a ~c <Key>Up:           xfeDoCommand(moveBookmarkUp)                \n\
! s ~m ~a ~c <Key>Down:         xfeDoCommand(moveBookmarkDown)              \n\
! s ~m ~a ~c <Key>osfUp:        xfeDoCommand(moveBookmarkUp)                \n\
! s ~m ~a ~c <Key>osfDown:      xfeDoCommand(moveBookmarkDown)              \n\

*abGlobalTranslations:                  #override                             \
             <Btn3Down>:        xfeDoPopup()                                \n\
     m    ~c <Key>D:            xfeDoCommand(abDeleteEntry)                 \n\
        a ~c <Key>D:            xfeDoCommand(abDeleteEntry)                 \n\
     m    ~c <Key>Y:            xfeDoCommand(redo)                          \n\
        a ~c <Key>Y:            xfeDoCommand(redo)                          \n\
     m    ~c <Key>Z:            xfeDoCommand(undo)                          \n\
        a ~c <Key>Z:            xfeDoCommand(undo)                          \n

! Translations in the textfield portion of the mailing list view
!
! TraverseTranslations are for the text field:
*abmlistTraverseTranslations:           #override                             \
 ~s       ~c <Key>BackSpace:    TableTraverse(BACKSPACE)                    \n\
 ~s       ~c <Key>Tab:          TableTraverse(NEXT)                         \n\
  s       ~c <Key>Tab:          TableTraverse(PREVIOUS)                     \n

!
! Translations for document source window
*dialogGlobalTranslations:              #override                             \
     m    ~c <Key>W:            xfeDoCommand(close)                         \n\
        a ~c <Key>W:            xfeDoCommand(close)                         \n



! Mouse bindings in the HTML display area.
!
*drawingArea.translations:              #replace                              \
             <Btn1Down>:        ArmLink()                                   \n\
             <Btn2Down>:        ArmLink()                                   \n\
 ~s          <Btn1Up>:          ActivateLink()                              \n\
 ~s          <Btn2Up>:          ActivateLink(new-window) DisarmLink()       \n\
  s          <Btn1Up>:          ActivateLink(save-only) DisarmLink()        \n\
  s          <Btn2Up>:          ActivateLink(save-only) DisarmLink()        \n\
             <Btn1Motion>:      DisarmLinkIfMoved()                         \n\
             <Btn2Motion>:      DisarmLinkIfMoved()                         \n\
             <Btn3Motion>:      DisarmLinkIfMoved()                         \n\
             <Motion>:          DescribeLink()                              \n\
             <Btn3Down>:        xfeDoPopup()                                \n


! Some basic emacs-like bindings for text fields.
!
! "editingTranslations" are merged into all XmText and XmTextField widgets.
! Then, either "multiLinEditingTranslations" or "singleLinEditingTranslations"
! are merged in, depending on whether it is an XmText or XmTextField widget.
! These resources are merged in after "globalTranslations", so it is possible
! for them to override the menu accelerators.
!
! Problems:
!  = I don't understand why the "Ctrl<Key>g" binding does nothing.
!  = I wish things like `C-k C-k C-k C-n C-k C-k C-y' did the right thing.
!  = This doesn't quite do active regions right, in that C-SPC M-f doesn't
!    leave the word highlighted (though it does leave a region set.)
! Basically, XmText is not Emacs, and we therefore exist in a world of pain.
!
!  NOTE: if you're looking here because BackSpace and Delete aren't
!        working the way you think they should, then you need to run
!        xmodmap or xkeycaps to fix your keyboard, or mess read the man
!        page for VirtualBindings(1).  For details, see the @NAME@ FAQ
!        (available from the Help menu.)
!
*editingTranslations:                   #override                             \
     m    ~c <Key>A:            select-all()                                \n\
        a ~c <Key>A:            select-all()                                \n\
    ~m ~a  c <Key>a:            beginning-of-line()                         \n\
  s ~m ~a  c <Key>a:            beginning-of-line(extend)                   \n\
 ~s ~m ~a  c <Key>b:            backward-character()                        \n\
  s ~m ~a  c <Key>b:            backward-character(extend)                  \n\
    ~m ~a  c <Key>d:            delete-next-character()                     \n\
 ~s ~m ~a  c <Key>e:            end-of-line()                               \n\
  s ~m ~a  c <Key>e:            end-of-line(extend)                         \n\
 ~s ~m ~a  c <Key>f:            forward-character()                         \n\
  s ~m ~a  c <Key>f:            forward-character(extend)                   \n\
    ~m ~a  c <Key>g:            process-cancel()                            \n\
    ~m ~a  c <Key>h:            delete-previous-character()                 \n\
    ~m ~a  c <Key>space:        set-anchor()                                \n\
    ~m ~a  c <Key>2:            set-anchor()                                \n\
    ~m ~a  c <Key>@:            set-anchor()                                \n\
                                                                              \
 ~s  m    ~c <Key>b:            backward-word()                             \n\
 ~s     a ~c <Key>b:            backward-word()                             \n\
  s  m    ~c <Key>b:            backward-word(extend)                       \n\
  s     a ~c <Key>b:            backward-word(extend)                       \n\
 ~s  m    ~c <Key>f:            forward-word()                              \n\
 ~s     a ~c <Key>f:            forward-word()                              \n\
  s  m    ~c <Key>f:            forward-word(extend)                        \n\
  s     a ~c <Key>f:            forward-word(extend)                        \n\
 ~s  m    ~c <Key>osfLeft:      backward-word()                             \n\
 ~s     a ~c <Key>osfLeft:      backward-word()                             \n\
  s  m    ~c <Key>osfLeft:      backward-word(extend)                       \n\
  s     a ~c <Key>osfLeft:      backward-word(extend)                       \n\
 ~s  m    ~c <Key>osfRight:     forward-word()                              \n\
 ~s     a ~c <Key>osfRight:     forward-word()                              \n\
  s  m    ~c <Key>osfRight:     forward-word(extend)                        \n\
  s     a ~c <Key>osfRight:     forward-word(extend)                        \n

!                       <KeyUp>: KeyUpInText() \n
!       Meta ~Ctrl       <Key>w:        copy-clipboard()                \n\
!        Alt ~Ctrl       <Key>w:        copy-clipboard()                \n\

! Translations that apply only to javascript form element text fields;
! This translation should only be added for text fields that is shown in a
! script page.
! SHOULD NOT apply this translation to any regular motif text field.
! because it will trigger the javascript layout stuff and introduce crash.
*formElemEditingTranslations:           #override                             \
             <KeyUp>:           KeyUpInText()                               \n

! Translations that apply only to single-line fields; see above.
!
! Ctrl-U clears the current line only in single-line fields.  Unix
! command-line weenies expect this, even though everyone knows Ctrl-U
! should mean "prefix argument".
!
! In single-line fields, the various killing commands are really deletion
! commands instead (that is, they don't affect the Clipboard and are not
! undoable with Ctrl-y) because the XmTextField widget does not provide
! kill commands -- only the XmText widget does.  (What the hell is up with
! that...)  Maybe we could get around this by never using XmTextField, and
! only using XmText with editMode set to SINGLE_LINE_EDIT, but that might
! have other unexpected effects...
!
! I thought of making Meta-d be `set-anchor() forward-word() cut-clipboard()',
! but that doesn't work, because forward-word takes the whitespace after the
! word as well, instead of stopping before the whitespace.
!
! Similarly, Ctrl-k can't be implemented with
! `set-anchor() end-of-line(extend) cut-clipboard() delete-selection()'
! because that has the side effect of (temporarily) owning the selection,
! which would make it impossible to: select text in another application;
! type C-k at Mozilla; Click middle to paste.  The paste would be impossible
! because C-k would have cleared the selection.
!
*singleLineEditingTranslations:         #override                             \
     m ~a ~c <Key>x:            xfeDoText(cut)                              \n\
     m ~a ~c <Key>c:            xfeDoText(copy)                             \n\
     m ~a ~c <Key>v:            xfeDoText(paste)                            \n\
     m ~a ~c <Key>y:            xfeDoText(paste)                            \n\
                                                                              \
    ~m  a ~c <Key>x:            xfeDoText(cut)                              \n\
    ~m  a ~c <Key>c:            xfeDoText(copy)                             \n\
    ~m  a ~c <Key>v:            xfeDoText(paste)                            \n\
    ~m  a ~c <Key>y:            xfeDoText(paste)                            \n\
                                                                              \
    ~m ~a  c <Key>y:            xfeDoText(paste)                            \n\
                                                                              \
    ~m ~a ~c <Key>SunCopy:      xfeDoText(copy)                             \n\
    ~m ~a ~c <Key>SunPaste:     xfeDoText(paste)                            \n\
    ~m ~a ~c <Key>SunCut:       xfeDoText(cut)                              \n\
                                                                              \
    ~m ~a  c <Key>u:            beginning-of-line() delete-to-end-of-line() \n\
    ~m ~a  c <Key>k:            delete-to-end-of-line()                     \n\
    ~m ~a  c <Key>l:            xfeDoCommand(refresh)                       \n\
    ~m ~a  c <Key>w:            key-select() delete-selection()             \n\
     m    ~c <Key>d:            delete-next-word()                          \n\
        a ~c <Key>d:            delete-next-word()                          \n\
        a ~c <Key><:            set-anchor() beginning-of-line()            \n\
     m    ~c <Key><:            set-anchor() beginning-of-line()            \n\
        a ~c <Key>>:            set-anchor() end-of-line()                  \n\
     m    ~c <Key>>:            set-anchor() end-of-line()                  \n\
       ~a  c <Key><:            set-anchor() beginning-of-line(extend)      \n\
    ~m     c <Key><:            set-anchor() beginning-of-line(extend)      \n\
       ~a  c <Key>>:            set-anchor() end-of-line(extend)            \n\
    ~m     c <Key>>:            set-anchor() end-of-line(extend)            \n\
     m    ~c <Key>osfBackSpace: delete-previous-word()                      \n\
        a ~c <Key>osfBackSpace: delete-previous-word()                      \n\
     m    ~c <Key>osfDelete:    delete-next-word()                          \n\
        a ~c <Key>osfDelete:    delete-next-word()                          \n\
                                                                              \
    ~m ~a ~c <Key>osfLeft:      deselect-all() backward-character()         \n\
    ~m ~a ~c <Key>osfRight:     deselect-all() forward-character()          \n

! Translations that apply only to multi-line fields; see above.
! Most of these are here because they are commands that only apply when
! the text area has multiple lines in it, but see above comment about
! "kill" commands versus "delete" commands.
!
! NOTE... [ had to modify the following to prevent overriding paste ]
!
!    Meta ~Ctrl ~Shift<Key>v:    previous-page()            \n\
!     Alt ~Ctrl ~Shift<Key>v:    previous-page()            \n\
!
*multiLineEditingTranslations:          #override                             \
     m ~a ~c <Key>x:            xfeDoText(cut)                              \n\
     m ~a ~c <Key>c:            xfeDoText(copy)                             \n\
     m ~a ~c <Key>v:            xfeDoText(paste)                            \n\
     m ~a ~c <Key>y:            xfeDoText(paste)                            \n\
                                                                              \
    ~m  a ~c <Key>x:            xfeDoText(cut)                              \n\
    ~m  a ~c <Key>c:            xfeDoText(copy)                             \n\
    ~m  a ~c <Key>v:            xfeDoText(paste)                            \n\
    ~m  a ~c <Key>y:            xfeDoText(paste)                            \n\
                                                                              \
    ~m ~a  c <Key>y:            xfeDoText(paste)                            \n\
                                                                              \
    ~m ~a ~c <Key>SunCopy:      xfeDoText(copy)                             \n\
    ~m ~a ~c <Key>SunPaste:     xfeDoText(paste)                            \n\
    ~m ~a ~c <Key>SunCut:       xfeDoText(cut)                              \n\
                                                                              \
    ~m ~a  c <Key>k:            kill-to-end-of-line()                       \n\
    ~m ~a  c <Key>w:            key-select() kill-selection()               \n\
    ~m ~a  c <Key>y:            unkill()                                    \n\
     m    ~c <Key>d:            kill-next-word()                            \n\
        a ~c <Key>d:            kill-next-word()                            \n\
    ~m ~a  c <Key>l:            redraw-display() xfeDoCommand(refresh)      \n\
     m    ~c <Key>osfBackSpace: kill-previous-word()                        \n\
        a ~c <Key>osfBackSpace: kill-previous-word()                        \n\
     m    ~c <Key>osfDelete:    kill-next-word()                            \n\
        a ~c <Key>osfDelete:    kill-next-word()                            \n\
                                                                              \
    ~m ~a  c <Key>j:            newline-and-indent()                        \n\
    ~m ~a  c <Key>o:            newline-and-backup()                        \n\
 ~s ~m ~a  c <Key>n:            next-line()                                 \n\
  s ~m ~a  c <Key>n:            next-line(extend)                           \n\
 ~s ~m ~a  c <Key>p:            previous-line()                             \n\
  s ~m ~a  c <Key>p:            previous-line(extend)                       \n\
 ~s ~m ~a  c <Key>v:            next-page()                                 \n\
  s ~m ~a  c <Key>v:            next-page(extend)                           \n\
 ~s  m     c <Key>v:            previous-page()                             \n\
 ~s     a  c <Key>v:            previous-page()                             \n\
  s  m    ~c <Key>v:            previous-page(extend)                       \n\
  s     a ~c <Key>v:            previous-page(extend)                       \n\
 ~s     a ~c <Key>[:            backward-paragraph()                        \n\
 ~s  m    ~c <Key>[:            backward-paragraph()                        \n\
  s     a ~c <Key>[:            backward-paragraph(extend)                  \n\
  s  m    ~c <Key>[:            backward-paragraph(extend)                  \n\
 ~s     a ~c <Key>]:            forward-paragraph()                         \n\
 ~s  m    ~c <Key>]:            forward-paragraph()                         \n\
  s     a ~c <Key>]:            forward-paragraph(extend)                   \n\
  s  m    ~c <Key>[:            forward-paragraph(extend)                   \n\
        a ~c <Key><:            set-anchor() beginning-of-file()            \n\
     m    ~c <Key><:            set-anchor() beginning-of-file()            \n\
        a ~c <Key>>:            set-anchor() end-of-file()                  \n\
     m    ~c <Key>>:            set-anchor() end-of-file()                  \n\
       ~a  c <Key><:            set-anchor() beginning-of-file(extend)      \n\
    ~m     c <Key><:            set-anchor() beginning-of-file(extend)      \n\
       ~a  c <Key>>:            set-anchor() end-of-file(extend)            \n\
    ~m     c <Key>>:            set-anchor() end-of-file(extend)            \n\
    ~m ~a ~c <Key>Prior:        previous-page()                             \n\
    ~m ~a ~c <Key>Next:         next-page()                                 \n\
    ~m ~a ~c <Key>osfPageUp:    previous-page()                             \n\
    ~m ~a ~c <Key>osfPageDown:  next-page()                                 \n\
           c <Key>/:                    undefined-key()                     \n

! Since these get merged in first, all the other bindings override them.
! This is just so that undefined non-self-inserting keys beep.
! (Except that this doesn't really work that well, so nevermind.)
!*XmText.translations:        #override                \n\
!            Ctrl <Key>:    undefined-key()            \n\
!            Meta <Key>:    undefined-key()            \n\
!             Alt <Key>:    undefined-key()            \n
!*XmTextField.translations:    #override                \n\
!            Ctrl <Key>:    undefined-key()            \n\
!            Meta <Key>:    undefined-key()            \n\
!             Alt <Key>:    undefined-key()            \n


! We merge these translations into all text fields which are not the
! bottommost text field in a dialog box (transient popup.)  This is so that
! hitting `return' in a text field will select the next text field if there
! is one, and will select the "OK" button if there are no more.
!
*nonterminalTextTranslations:           #override                             \
             <Key>Return:       next-tab-group()                            \n\
             <Key>Linefeed:     next-tab-group()                            \n

! This is used for self-submitting text fields in HTML forms (not popups.)
! We don't need to store these in to dialog box text fields, since in that
! case we are able to simply avoid storing in the above ones, but we don't
! know that until too late with forms.
*terminalTextTranslations:              #override                             \
             <Key>Return:       activate()                                  \n\
             <Key>Linefeed:     activate()                                  \n

! These translations are installed on every TextField widget in the main tree,
! but *not* on text fields in dialogs, or in the mail composition window
! (that's the difference between this and singleLineEditingTranslations.)
*globalTextFieldTranslations:           #override                             \
    ~m ~a ~c <Key>Up:           LineUp()                                    \n\
    ~m ~a ~c <Key>Down:         LineDown()                                  \n\
    ~m ~a ~c <Key>osfUp:        LineUp()                                    \n\
    ~m ~a ~c <Key>osfDown:      LineDown()                                  \n

! These keysyms are apparently an R6ism.
!    ~Meta ~Alt ~Ctrl<Key>KP_Up:    LineUp()            \n\
!    ~Meta ~Alt ~Ctrl<Key>KP_Down:    LineDown()            \n\


! We install these on every widget in the main tree (but not popups) that isn't
! a Text or TextField or List.These, basically, are motion commands that ought
! to apply to the HTML display area unless some text field or List has focus,
! in which case they ought to apply to the text in that text field instead.
! Doesn't all this crap just make you want to hurl?
*globalNonTextTranslations:             #override                             \
    ~m ~a ~c <Key>space:        xfeDoCommand(spacebar)                      \n\
                                                                              \
    ~m ~a ~c <Key>Delete:       PageUp()                                    \n\
    ~m ~a ~c <Key>BackSpace:    PageUp()                                    \n\
    ~m ~a ~c <Key>Up:           LineUp()                                    \n\
    ~m ~a ~c <Key>Down:         LineDown()                                  \n\
    ~m ~a ~c <Key>Left:         ColumnLeft()                                \n\
    ~m ~a ~c <Key>Right:        ColumnRight()                               \n\
                                                                              \
    ~m ~a ~c <Key>osfDelete:    PageUp()                                    \n\
    ~m ~a ~c <Key>osfBackSpace: PageUp()                                    \n\
     m     c <Key>g:            fishcam()                                   \n\
        a  c <Key>g:            fishcam()                                   \n\
     m     c <Key>t:            net_showstatus()                            \n\
        a  c <Key>t:            net_showstatus()                            \n\
    ~m ~a ~c <Key>osfUp:        LineUp()                                    \n\
    ~m ~a ~c <Key>osfDown:      LineDown()                                  \n\
    ~m ~a ~c <Key>osfLeft:      ColumnLeft()                                \n\
    ~m ~a ~c <Key>osfRight:     ColumnRight()                               \n\
                                                                              \
    ~m ~a ~c <Key>Prior:        PageUp()                                    \n\
    ~m ~a ~c <Key>Next:         PageDown()                                  \n\
    ~m ~a ~c <Key>osfPageUp:    PageUp()                                    \n\
    ~m ~a ~c <Key>osfPageDown:  PageDown()                                  \n

! These keysyms are apparently an R6ism.
!    ~Meta ~Alt ~Ctrl<Key>KP_Up:    LineUp()            \n\
!    ~Meta ~Alt ~Ctrl<Key>KP_Down:    LineDown()            \n\
!    ~Meta ~Alt ~Ctrl<Key>KP_Left:    ColumnLeft()            \n\
!    ~Meta ~Alt ~Ctrl<Key>KP_Right:    ColumnRight()            \n\
!    ~Meta ~Alt ~Ctrl<Key>KP_Prior:    PageUp()            \n\
!    ~Meta ~Alt ~Ctrl<Key>KP_Next:    PageDown()            \n\

!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Editor mouse translations
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*editorDrawingArea.translations:        #replace                              \
             <Btn3Down>:        xfeDoCommand(showPopup)                     \n\
  s          <Btn1Down>:        xfeDoCommand(select,extend)                 \n\
             <Btn1Down>:        xfeDoClick(single,{,select,grab,},            \
                                double,{,objectIs, text,  {,select,word,},    \
                                image, {,dialog,image,},                      \
                                hrule, {,dialog,hrule,},                      \
                                table, {,dialog,table,},                      \
                                target,{,dialog,target,},                     \
                                tag,   {,dialog,tag,},})                    \n\
             <Btn1Motion>:      xfeDoCommand(select,extend)                 \n\
             <Btn1Up>:          xfeDoCommand(select,end)                    \n\
             <Btn2Down>:        xfeDoCommand(paste,selection)               \n\
             <Btn2Motion>:                                                  \n\
             <Btn2Up>:                                                      \n\
             <Motion>:          editor-motion()                             \n

! Editor keyboard translations.
*editorTranslations:                    #override                             \
                                                                              \
 ~s  m    ~c <Key>o:            xfeDoCommand(openPage)                      \n\
 ~s     a ~c <Key>o:            xfeDoCommand(openPage)                      \n\
  s  m    ~c <Key>o:            xfeDoCommand(openPageChooseFile)            \n\
  s     a ~c <Key>o:            xfeDoCommand(openPageChooseFile)            \n\
     m    ~c <Key>s:            xfeDoCommand(save)                          \n\
        a ~c <Key>s:            xfeDoCommand(save)                          \n\
     m    ~c <Key>r:            xfeDoCommand(reload)                        \n\
        a ~c <Key>r:            xfeDoCommand(reload)                        \n\
  s  m    ~c <Key>r:            xfeDoCommand(reload,super)                  \n\
  s     a ~c <Key>r:            xfeDoCommand(reload,super)                  \n\
     m    ~c <Key>P:            xfeDoCommand(print)                         \n\
        a ~c <Key>P:            xfeDoCommand(print)                         \n\
                                                                              \
    ~m ~a  c <Key>h:            xfeDoCommand(deleteItem,previous)           \n\
     m    ~c <Key>Return:       xfeDoCommand(sendMessageNow)                \n\
        a ~c <Key>Return:       xfeDoCommand(sendMessageNow)                \n\
    ~m ~a ~c <Key>Up:           xfeDoCommand(moveCursor,up)                 \n\
    ~m ~a ~c <Key>Down:         xfeDoCommand(moveCursor,down)               \n\
    ~m ~a ~c <Key>osfUp:        xfeDoCommand(moveCursor,up)                 \n\
    ~m ~a ~c <Key>osfDown:      xfeDoCommand(moveCursor,down)               \n\
    ~m ~a ~c <Key>osfLeft:      xfeDoCommand(moveCursor,previous)           \n\
    ~m ~a ~c <Key>osfRight:     xfeDoCommand(moveCursor,next)               \n\
    ~m ~a  c <Key>osfLeft:      xfeDoCommand(moveCursor,previousWord)       \n\
    ~m ~a  c <Key>osfRight:     xfeDoCommand(moveCursor,nextWord)           \n\
                                                                              \
:   ~m ~a ~c <Key>Delete:       xfeDoCommand(deleteItem,next)               \n\
:   ~m ~a ~c <Key>BackSpace:    xfeDoCommand(deleteItem,previous)           \n\
:   ~m ~a ~c <Key>osfDelete:    xfeDoCommand(deleteItem,next)               \n\
:   ~m ~a ~c <Key>osfBackSpace: xfeDoCommand(deleteItem,previous)           \n\
                                                                              \
    ~m ~a  c <Key>Home:         xfeDoCommand(moveCursor,beginningOfPage)    \n\
    ~m ~a  c <Key>End:          xfeDoCommand(moveCursor,endOfPage)          \n\
    ~m ~a  c <Key>osfBeginLine: xfeDoCommand(moveCursor,beginningOfPage)    \n\
    ~m ~a  c <Key>osfEndLine:   xfeDoCommand(moveCursor,endOfPage)          \n\
    ~m ~a ~c <Key>Home:         xfeDoCommand(moveCursor,beginningOfLine)    \n\
    ~m ~a ~c <Key>End:          xfeDoCommand(moveCursor,endOfLine)          \n\
    ~m ~a ~c <Key>osfBeginLine: xfeDoCommand(moveCursor,beginOfLine)        \n\
    ~m ~a ~c <Key>osfEndLine:   xfeDoCommand(moveCursor,endOfLine)          \n\
  s ~m ~a ~c <Key>Return:       xfeDoCommand(insertLineBreak,normal)        \n\
    ~m ~a ~c <Key>Return:       xfeDoCommand(insertReturn)                  \n\
  s ~m ~a ~c <Key>space:        xfeDoCommand(insertNonBreakingSpace)        \n\
    ~m ~a ~c <Key>space:        xfeDoCommand(insertKey)                     \n\
    ~m  a ~c <Key>-:            xfeDoCommand(outdent)                       \n\
    ~m  a ~c <Key>=:            xfeDoCommand(indent)                        \n\
     m ~a ~c <Key>-:            xfeDoCommand(outdent)                       \n\
     m ~a ~c <Key>=:            xfeDoCommand(indent)                        \n\
                                                                              \
 ~s        c <Key>Tab:          xfeDoCommand(tab,insert)                    \n\
 ~s       ~c <Key>Tab:          xfeDoCommand(tab,forward)                   \n\
  s       ~c <Key>Tab:          xfeDoCommand(tab,backward)                  \n\
                                                                              \
    ~m ~a  c <Key>a:            xfeDoCommand(moveCursor,beginningOfLine)    \n\
    ~m ~a  c <Key>e:            xfeDoCommand(moveCursor,endOfLine)          \n\
    ~m ~a  c <Key>p:            xfeDoCommand(moveCursor,up)                 \n\
    ~m ~a  c <Key>n:            xfeDoCommand(moveCursor,down)               \n\
    ~m ~a  c <Key>b:            xfeDoCommand(moveCursor,previous)           \n\
    ~m ~a  c <Key>f:            xfeDoCommand(moveCursor,next)               \n\
    ~m ~a  c <Key>d:            xfeDoCommand(deleteItem,next)               \n\
    ~m ~a  c <Key>k:            xfeDoCommand(deleteItem,endOfLine)          \n\
     m ~a ~c <Key><:            xfeDoCommand(moveCursor,beginningOfPage)    \n\
     m ~a ~c <Key>>:            xfeDoCommand(moveCursor,endOfPage)          \n\
    ~m  a ~c <Key><:            xfeDoCommand(moveCursor,beginningOfPage)    \n\
    ~m  a ~c <Key>>:            xfeDoCommand(moveCursor,endOfPage)          \n\
                                                                              \
  s  m    ~c <Key>z:            xfeDoCommand(redo)                          \n\
  s     a ~c <Key>z:            xfeDoCommand(redo)                          \n\
     m    ~c <Key>z:            xfeDoCommand(undo)                          \n\
        a ~c <Key>z:            xfeDoCommand(undo)                          \n\
                                                                              \
     m ~a ~c <Key>b:            xfeDoCommand(toggleCharacterStyle,bold)     \n\
    ~m  a ~c <Key>b:            xfeDoCommand(toggleCharacterStyle,bold)     \n\
     m ~a ~c <Key>i:            xfeDoCommand(toggleCharacterStyle,italic)   \n\
    ~m  a ~c <Key>i:            xfeDoCommand(toggleCharacterStyle,italic)   \n\
     m ~a ~c <Key>u:            xfeDoCommand(toggleCharacterStyle,underline)\n\
    ~m  a ~c <Key>u:            xfeDoCommand(toggleCharacterStyle,underline)\n\
     m ~a ~c <Key>t:            xfeDoCommand(toggleCharacterStyle,fixed)    \n\
    ~m  a ~c <Key>t:            xfeDoCommand(toggleCharacterStyle,fixed)    \n\
     m ~a ~c <Key>k:            xfeDoCommand(setCharacterStyle,none)        \n\
    ~m  a ~c <Key>k:            xfeDoCommand(setCharacterStyle,none)        \n\
                                                                              \
    ~m ~a  c <Key>l:            xfeDoCommand(refresh)                       \n\
                                                                              \
 ~s  m ~a ~c <Key>Up:           xfeDoCommand(setFontSize,increase)          \n\
 ~s  m ~a ~c <Key>osfUp:        xfeDoCommand(setFontSize,increase)          \n\
 ~s  m ~a ~c <Key>Down:         xfeDoCommand(setFontSize,decrease)          \n\
 ~s  m ~a ~c <Key>osfDown:      xfeDoCommand(setFontSize,decrease)          \n\
                                                                              \
    ~m ~a ~c <Key>SunCopy:      xfeDoCommand(copy)                          \n\
    ~m ~a ~c <Key>SunPaste:     xfeDoCommand(paste)                         \n\
    ~m ~a ~c <Key>SunCut:       xfeDoCommand(cut)                           \n\
                                                                              \
 ~s  m ~a ~c <Key>d:            xfeDoCommand(deleteItem)                    \n\
 ~s ~m  a ~c <Key>d:            xfeDoCommand(deleteItem)                    \n\
                                                                              \
 ~s  m ~a ~c <Key>f:            xfeDoCommand(findInObject)                  \n\
 ~s  m ~a ~c <Key>g:            xfeDoCommand(findAgain)                     \n\
 ~s ~m  a ~c <Key>f:            xfeDoCommand(findInObject)                  \n\
 ~s ~m  a ~c <Key>g:            xfeDoCommand(findAgain)                     \n\
                                                                              \
     m    ~c <Key>A:            xfeDoCommand(selectAll)                     \n\
        a ~c <Key>A:            xfeDoCommand(selectAll)                     \n\
     m    ~c <Key>C:            xfeDoCommand(copy)                          \n\
        a ~c <Key>C:            xfeDoCommand(copy)                          \n\
     m    ~c <Key>H:            xfeDoCommand(openHistory)                   \n\
        a ~c <Key>H:            xfeDoCommand(openHistory)                   \n\
     m    ~c <Key>m:            xfeDoCommand(composeMessage)                \n\
        a ~c <Key>m:            xfeDoCommand(composeMessage)                \n\
 ~s  m    ~c <Key>n:            xfeDoCommand(openBrowser)                   \n\
 ~s     a ~c <Key>n:            xfeDoCommand(openBrowser)                   \n\
  s  m    ~c <Key>n:            xfeDoCommand(newBlank)                      \n\
  s     a ~c <Key>n:            xfeDoCommand(newBlank)                      \n\
     m    ~c <Key>Q:            xfeDoCommand(exit)                          \n\
        a ~c <Key>Q:            xfeDoCommand(exit)                          \n\
     m    ~c <Key>R:                    undefined-key()                     \n\
        a ~c <Key>R:                    undefined-key()                     \n\
     m    ~c <Key>V:            xfeDoCommand(paste)                         \n\
        a ~c <Key>V:            xfeDoCommand(paste)                         \n\
     m    ~c <Key>W:            xfeDoCommand(close)                         \n\
        a ~c <Key>W:            xfeDoCommand(close)                         \n\
     m    ~c <Key>X:            xfeDoCommand(cut)                           \n\
        a ~c <Key>X:            xfeDoCommand(cut)                           \n\
     m    ~c <Key>Y:            xfeDoCommand(paste)                         \n\
        a ~c <Key>Y:            xfeDoCommand(paste)                         \n\
                                                                              \
 ~s  m    ~c <Key>1:            xfeDoCommand(openOrBringUpBrowser)          \n\
 ~s     a ~c <Key>1:            xfeDoCommand(openOrBringUpBrowser)          \n\
  s  m    ~c <Key>1:            xfeDoCommand(openFolders)                   \n\
  s     a ~c <Key>1:            xfeDoCommand(openFolders)                   \n\
 ~s  m    ~c <Key>2:            xfeDoCommand(openInbox)                     \n\
 ~s     a ~c <Key>2:            xfeDoCommand(openInbox)                     \n\
  s  m    ~c <Key>2:            xfeDoCommand(openAddrBook)                  \n\
  s     a ~c <Key>2:            xfeDoCommand(openAddrBook)                  \n\
     m    ~c <Key>3:            xfeDoCommand(openNewsgroups)                \n\
        a ~c <Key>3:            xfeDoCommand(openNewsgroups)                \n\
     m    ~c <Key>4:            xfeDoCommand(openEditor)                    \n\
        a ~c <Key>4:            xfeDoCommand(openEditor)                    \n\
     m    ~c <Key>5:            xfeDoCommand(openConference)                \n\
        a ~c <Key>5:            xfeDoCommand(openConference)                \n\
     m    ~c <Key>6:            xfeDoCommand(openCalendar)                  \n\
        a ~c <Key>6:            xfeDoCommand(openCalendar)                  \n\
     m    ~c <Key>7:            xfeDoCommand(openHostOnDemand)              \n\
        a ~c <Key>7:            xfeDoCommand(openHostOnDemand)              \n\
     m    ~c <Key>8:            xfeDoCommand(openNetcaster)                 \n\
        a ~c <Key>8:            xfeDoCommand(openNetcaster)                 \n\
                                                                              \
    ~m ~a ~c <Key>Prior:        PageUp()                                    \n\
    ~m ~a ~c <Key>Next:         PageDown()                                  \n\
    ~m ~a ~c <Key>osfPageUp:    PageUp()                                    \n\
    ~m ~a ~c <Key>osfPageDown:  PageDown()                                  \n\
                                                                              \
 ~s ~m ~a ~c <Key>osfHelp:      xfeDoCommand(manual)                        \n\
                                                                              \
 ~s ~m ~a ~c <Key>F10:                                                      \n\
 ~s ~m ~a ~c <Key>osfMenuBar:                                               \n\
                                                                              \
             <KeyRelease>:                                                  \n\
             <Key>:             xfeDoCommand(insertKey)                     \n\
             <KeyPress>:        xfeDoCommand(insertKey)                     \n\
             <KeyUp>:                                                       \n\
             <KeyDown>:         xfeDoCommand(insertKey)                     \n

!=============================================================================
