! 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 A: xfeDoCommand(selectAll) \n\ a ~c A: xfeDoCommand(selectAll) \n\ m ~c B: xfeDoCommand(openBookmarks) \n\ a ~c B: xfeDoCommand(openBookmarks) \n\ m ~c C: xfeDoCommand(copy) \n\ a ~c C: xfeDoCommand(copy) \n\ m ~c D: undefined-key() \n\ a ~c D: undefined-key() \n\ m ~c E: undefined-key() \n\ a ~c E: undefined-key() \n\ m ~c F: undefined-key() \n\ a ~c F: undefined-key() \n\ m ~c G: undefined-key() \n\ a ~c G: undefined-key() \n\ m ~c H: xfeDoCommand(openHistory) \n\ a ~c H: xfeDoCommand(openHistory) \n\ m ~c I: undefined-key() \n\ a ~c I: undefined-key() \n\ m ~c J: undefined-key() \n\ a ~c J: undefined-key() \n\ m ~c K: xfeDoCommand(addBookmark) \n\ a ~c K: xfeDoCommand(addBookmark) \n\ m ~c L: undefined-key() \n\ a ~c L: undefined-key() \n\ m ~c m: xfeDoCommand(composeMessage) \n\ a ~c m: xfeDoCommand(composeMessage) \n\ ~s m ~c n: xfeDoCommand(openBrowser) \n\ ~s a ~c n: xfeDoCommand(openBrowser) \n\ s m ~c n: xfeDoCommand(newBlank) \n\ s a ~c n: xfeDoCommand(newBlank) \n\ m ~c O: undefined-key() \n\ a ~c O: undefined-key() \n\ m ~c P: undefined-key() \n\ a ~c P: undefined-key() \n\ m ~c Q: xfeDoCommand(exit) \n\ a ~c Q: xfeDoCommand(exit) \n\ m ~c R: undefined-key() \n\ a ~c R: undefined-key() \n\ m ~c S: xfeDoCommand(saveAs) \n\ a ~c S: xfeDoCommand(saveAs) \n\ m ~c T: undefined-key() \n\ a ~c T: undefined-key() \n\ m ~c U: undefined-key() \n\ a ~c U: undefined-key() \n\ m ~c V: xfeDoCommand(paste) \n\ a ~c V: xfeDoCommand(paste) \n\ m ~c W: xfeDoCommand(close) \n\ a ~c W: xfeDoCommand(close) \n\ m ~c X: xfeDoCommand(cut) \n\ a ~c X: xfeDoCommand(cut) \n\ m ~c Y: xfeDoCommand(paste) \n\ a ~c Y: xfeDoCommand(paste) \n\ m ~c Z: undefined-key() \n\ a ~c Z: undefined-key() \n\ \ ~s m ~c 1: xfeDoCommand(openOrBringUpBrowser) \n\ ~s a ~c 1: xfeDoCommand(openOrBringUpBrowser) \n\ s m ~c 1: xfeDoCommand(openFolders) \n\ s a ~c 1: xfeDoCommand(openFolders) \n\ ~s m ~c 2: xfeDoCommand(openInbox) \n\ ~s a ~c 2: xfeDoCommand(openInbox) \n\ s m ~c 2: xfeDoCommand(openAddrBook) \n\ s a ~c 2: xfeDoCommand(openAddrBook) \n\ m ~c 3: xfeDoCommand(openNewsgroups) \n\ a ~c 3: xfeDoCommand(openNewsgroups) \n\ m ~c 4: xfeDoCommand(openEditor) \n\ a ~c 4: xfeDoCommand(openEditor) \n\ m ~c 5: xfeDoCommand(openConference) \n\ a ~c 5: xfeDoCommand(openConference) \n\ m ~c 6: xfeDoCommand(openCalendar) \n\ a ~c 6: xfeDoCommand(openCalendar) \n\ m ~c 7: xfeDoCommand(openHostOnDemand) \n\ a ~c 7: xfeDoCommand(openHostOnDemand) \n\ m ~c 8: xfeDoCommand(openNetcaster) \n\ a ~c 8: xfeDoCommand(openNetcaster) \n\ \ ~m ~a ~c Prior: PageUp() \n\ ~m ~a ~c Next: PageDown() \n\ ~m ~a ~c osfPageUp: PageUp() \n\ ~m ~a ~c osfPageDown: PageDown() \n\ \ ~m ~a ~c SunCopy: xfeDoCommand(copy) \n\ ~m ~a ~c SunPaste: xfeDoCommand(paste) \n\ ~m ~a ~c SunCut: xfeDoCommand(cut) \n\ \ ~s ~m ~a ~c osfHelp: xfeDoCommand(manual) \n ! These used to be up above. ! Meta ~CtrlZ: undo() \n\ ! Alt ~CtrlZ: undo() \n\ ! These keysyms are apparently an R6ism. ! ~Meta ~Alt ~CtrlKP_Prior: PageUp() \n\ ! ~Meta ~Alt ~CtrlKP_Next: PageDown() \n\ ! Translations in the Navigator window. *browserGlobalTranslations: #override \ m ~c F: xfeDoCommand(findInObject) \n\ a ~c F: xfeDoCommand(findInObject) \n\ m ~c G: xfeDoCommand(findAgain) \n\ a ~c G: xfeDoCommand(findAgain) \n\ ~s m ~c i: xfeDoCommand(showImages) \n\ ~s a ~c i: xfeDoCommand(showImages) \n\ s m ~c i: xfeDoCommand(viewSecurity) \n\ s a ~c i: xfeDoCommand(viewSecurity) \n\ m ~c L: xfeDoCommand(openPage) \n\ a ~c L: xfeDoCommand(openPage) \n\ ~s m ~c o: xfeDoCommand(openPage) \n\ ~s a ~c o: xfeDoCommand(openPage) \n\ s m ~c o: xfeDoCommand(openPageChooseFile) \n\ s a ~c o: xfeDoCommand(openPageChooseFile) \n\ m ~c P: xfeDoCommand(print) \n\ a ~c P: xfeDoCommand(print) \n\ m ~c R: xfeDoCommand(reload) \n\ a ~c R: xfeDoCommand(reload) \n\ m ~c minus: xfeDoCommand(decreaseFont) \n\ a ~c minus: xfeDoCommand(decreaseFont) \n\ m ~c plus: xfeDoCommand(increaseFont) \n\ a ~c plus: xfeDoCommand(increaseFont) \n\ \ m ~c osfLeft: xfeDoCommand(back) \n\ a ~c osfLeft: xfeDoCommand(back) \n\ m ~c osfRight: xfeDoCommand(forward) \n\ a ~c osfRight: xfeDoCommand(forward) \n\ Escape: xfeDoCommand(stopLoading) \n\ 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 \ : xfeDoPopup() \n\ m ~c D: xfeDoCommand(deleteFolder) \n\ a ~c D: xfeDoCommand(deleteFolder) \n\ m ~c H: xfeDoCommand(deliverQueuedMessages) \n\ a ~c H: xfeDoCommand(deliverQueuedMessages) \n\ m ~c K: xfeDoCommand(compressFolders) \n\ a ~c K: xfeDoCommand(compressFolders) \n\ s m ~c f: xfeDoCommand(search) \n\ s a ~c f: xfeDoCommand(search) \n\ s m ~c i: xfeDoCommand(viewSecurity) \n\ s a ~c i: xfeDoCommand(viewSecurity) \n\ m ~c O: xfeDoCommand(openSelected) \n\ a ~c O: xfeDoCommand(openSelected) \n\ ~s ~m ~a ~c Return: xfeDoCommand(openSelected) \n\ ~s ~m ~a ~c osfActivate: xfeDoCommand(openSelected) \n\ m ~c T: xfeDoCommand(getNewMessages) \n\ a ~c T: xfeDoCommand(getNewMessages) \n\ m ~c Z: xfeDoCommand(undo) \n\ Escape: xfeDoCommand(stopLoading) \n ! Translations in the MailNews message and threads windows ! These override globalTranslations. *messagewinGlobalTranslations: #override \ : xfeDoPopup() \n\ m ~c D: xfeDoCommand(deleteMessage) \n\ a ~c D: xfeDoCommand(deleteMessage) \n\ s m ~c i: xfeDoCommand(viewSecurity) \n\ s a ~c i: xfeDoCommand(viewSecurity) \n\ m ~c F: xfeDoCommand(findInObject) \n\ a ~c F: xfeDoCommand(findInObject) \n\ m ~c G: xfeDoCommand(findAgain) \n\ a ~c G: xfeDoCommand(findAgain) \n\ m ~c K: xfeDoCommand(compressFolders) \n\ a ~c K: xfeDoCommand(compressFolders) \n\ m ~c L: xfeDoCommand(forwardMessage) \n\ a ~c L: xfeDoCommand(forwardMessage) \n\ m ~c O: xfeDoCommand(openSelected) \n\ a ~c O: xfeDoCommand(openSelected) \n\ m ~c P: xfeDoCommand(print) \n\ a ~c P: xfeDoCommand(print) \n\ ~s m ~c r: xfeDoCommand(replyToSender) \n\ ~s a ~c r: xfeDoCommand(replyToSender) \n\ s m ~c r: xfeDoCommand(replyToAll) \n\ s a ~c r: xfeDoCommand(replyToAll) \n\ m ~c S: xfeDoCommand(saveMessagesAs) \n\ a ~c S: xfeDoCommand(saveMessagesAs) \n\ m ~c T: xfeDoCommand(getNewMessages) \n\ a ~c T: xfeDoCommand(getNewMessages) \n\ m ~c Y: xfeDoCommand(redo) \n\ a ~c Y: xfeDoCommand(redo) \n\ m ~c Z: xfeDoCommand(undo) \n\ a ~c Z: xfeDoCommand(undo) \n\ \ ~s m ~c Up: xfeDoCommand(previousMessage) \n\ ~s a ~c Up: xfeDoCommand(previousMessage) \n\ ~s m ~c osfUp: xfeDoCommand(previousMessage) \n\ ~s a ~c osfUp: xfeDoCommand(previousMessage) \n\ ~s m ~c Down: xfeDoCommand(nextMessage) \n\ ~s a ~c Down: xfeDoCommand(nextMessage) \n\ ~s m ~c osfDown: xfeDoCommand(nextMessage) \n\ ~s a ~c osfDown: xfeDoCommand(nextMessage) \n\ ~s m ~c [: xfeDoCommand(back) \n\ ~s a ~c [: xfeDoCommand(back) \n\ ~s m ~c ]: xfeDoCommand(forward) \n\ ~s a ~c ]: xfeDoCommand(forward) \n\ \ s m ~c Up: xfeDoCommand(previousUnreadMessage) \n\ s a ~c Up: xfeDoCommand(previousUnreadMessage) \n\ s m ~c osfUp: xfeDoCommand(previousUnreadMessage) \n\ s a ~c osfUp: xfeDoCommand(previousUnreadMessage) \n\ s m ~c Down: xfeDoCommand(nextUnreadMessage) \n\ s a ~c Down: xfeDoCommand(nextUnreadMessage) \n\ s m ~c osfDown: xfeDoCommand(nextUnreadMessage) \n\ s a ~c osfDown: xfeDoCommand(nextUnreadMessage) \n\ \ s c Up: xfeDoCommand(previousFlaggedMessage) \n\ s c osfUp: xfeDoCommand(previousFlaggedMessage) \n\ s c Down: xfeDoCommand(nextFlaggedMessage) \n\ s c osfDown: xfeDoCommand(nextFlaggedMessage) \n\ \ ~s ~m ~a ~c Return: xfeDoCommand(openSelected) \n\ ~s ~m ~a ~c osfActivate: xfeDoCommand(openSelected) \n\ \ s ~m ~a ~c 8: xfeDoCommand(expandAll) \n\ ~m ~a ~c plus: xfeDoCommand(expand) \n\ ~s ~m ~a ~c slash: xfeDoCommand(collapseAll) \n\ ~s ~m ~a ~c minus: xfeDoCommand(collapse) \n\ \ ~m ~a M: xfeDoCommand(markMessageRead) \n\ ~m ~a U: xfeDoCommand(markMessageUnread) \n\ ~m ~a T: xfeDoCommand(markThreadRead) \n\ ~m ~a G: xfeDoCommand(markAllMessagesRead) \n\ ~m ~a D: xfeDoCommand(markMessageByDate) \n\ ~m ~a L: xfeDoCommand(markMessageForLater) \n\ ~m ~a K: xfeDoCommand(ignoreThread) \n\ ~m ~a W: xfeDoCommand(watchThread) \n\ ~s a ~c BackSpace: xfeDoCommand(deleteMessage) \n\ ~s m ~c BackSpace: xfeDoCommand(deleteMessage) \n\ ~s a ~c osfBackSpace: xfeDoCommand(deleteMessage) \n\ ~s m ~c osfBackSpace: xfeDoCommand(deleteMessage) \n ! Translations in the MailCompose window. ! These are used instead of globalTranslations. ! *mailcomposeGlobalTranslations: #override \ \ : xfeDoPopup() \n\ m ~c D: xfeDoCommand(delete) \n\ a ~c D: xfeDoCommand(delete) \n\ s m ~c i: xfeDoCommand(viewSecurity) \n\ s a ~c i: xfeDoCommand(viewSecurity) \n\ m ~c Return: xfeDoCommand(sendMessageNow) \n\ a ~c Return: xfeDoCommand(sendMessageNow) \n ! Translations in the AddressOutliner portion of the compose window: ! ! TraverseTranslations are for the recipient text field: *addressOutlinerTraverseTranslations: #override \ :~s ~c osfDelete: TableTraverse(DELETE) \n\ :~s ~c Delete: TableTraverse(DELETE) \n\ :~s ~c BackSpace: TableTraverse(BACKSPACE) \n\ :~s ~c osfBackSpace: TableTraverse(BACKSPACE) \n\ ~s ~c osfRight: TableTraverse(RIGHT) \n\ ~s ~c osfLeft: TableTraverse(LEFT) \n\ osfInsert: TableTraverse(INSERT) \n\ ~s ~c Insert: TableTraverse(INSERT) \n\ ~s ~c osfBeginLine: TableTraverse(HOME) \n\ ~s ~c Home: TableTraverse(HOME) \n\ ~s ~c End: TableTraverse(END) \n\ ~s ~c osfEndLine: TableTraverse(END) \n\ ~s ~c osfUp: TableTraverse(UP) \n\ ~s ~c osfDown: TableTraverse(DOWN) \n\ ~s ~c Tab: TableTraverse(NEXT) \n\ s ~c Tab: TableTraverse(PREVIOUS) \n ! KeyTranslations are for the To/Cc/etc. field: *addressOutlinerKeyTranslations: #override \ ~s ~c osfRight: TableTraverse(RIGHT) \n\ ~s ~c osfLeft: TableTraverse(LEFT) \n\ ~s ~c osfDelete: TableTraverse(DELETE) \n\ ~s ~c Delete: TableTraverse(DELETE) \n\ osfInsert: TableTraverse(INSERT) \n\ ~s ~c Insert: TableTraverse(INSERT) \n\ ~s ~c osfBeginLine: TableTraverse(HOME) \n\ ~s ~c Home: TableTraverse(HOME) \n\ ~s ~c End: TableTraverse(END) \n\ ~s ~c osfEndLine: TableTraverse(END) \n\ ~s ~c osfUp: TableTraverse(UP) \n\ ~s ~c osfDown: TableTraverse(DOWN) \n\ ~s ~c Tab: TableTraverse(NEXT) \n\ s ~c Tab: TableTraverse(PREVIOUS) \n\ ~s ~c t: KeyIn(To:) \n\ s ~c t: KeyIn(To:) \n\ ~s ~c c: KeyIn(Cc:) \n\ s ~c c: KeyIn(Cc:) \n\ ~s ~c b: KeyIn(Bcc:) \n\ s ~c b: KeyIn(Bcc:) \n\ ~s ~c n: KeyIn(Newsgroup:) \n\ s ~c n: KeyIn(Newsgroup:) \n\ ~s ~c f: KeyIn(Followup To:) \n\ s ~c f: KeyIn(Followup To:) \n\ ~s ~c r: KeyIn(Reply To:) \n\ s ~c r: KeyIn(Reply To:) \n ! Translations in the MailNews Search window. ! These are used instead of globalTranslations. ! *mnsearchGlobalTranslations: #override \ : xfeDoPopup() \n\ m ~c D: xfeDoCommand(deleteMessage) \n\ a ~c 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 space: PageDown() \n\ m ~c D: xfeDoCommand(delete) \n\ a ~c D: xfeDoCommand(delete) \n\ m ~c F: xfeDoCommand(findInObject) \n\ a ~c F: xfeDoCommand(findInObject) \n\ m ~c G: xfeDoCommand(findAgain) \n\ a ~c G: xfeDoCommand(findAgain) \n\ m ~c O: xfeDoCommand(openSelected) \n\ a ~c O: xfeDoCommand(openSelected) \n\ ~s ~m ~a ~c Up: LineUp() \n\ ~s ~m ~a ~c Down: LineDown() \n\ ~s ~m ~a ~c osfUp: LineUp() \n\ ~s ~m ~a ~c osfDown: LineDown() \n\ ~m ~a ~c Prior: PageUp() \n\ ~m ~a ~c Next: PageDown() \n\ ~m ~a ~c osfPageUp: PageUp() \n\ ~m ~a ~c osfPageDown: PageDown() \n ! These used to be in the bookmark translations. navcenter probably ! should have equivalents ! s ~m ~a ~c Up: xfeDoCommand(moveBookmarkUp) \n\ ! s ~m ~a ~c Down: xfeDoCommand(moveBookmarkDown) \n\ ! s ~m ~a ~c osfUp: xfeDoCommand(moveBookmarkUp) \n\ ! s ~m ~a ~c osfDown: xfeDoCommand(moveBookmarkDown) \n\ *abGlobalTranslations: #override \ : xfeDoPopup() \n\ m ~c D: xfeDoCommand(abDeleteEntry) \n\ a ~c D: xfeDoCommand(abDeleteEntry) \n\ m ~c Y: xfeDoCommand(redo) \n\ a ~c Y: xfeDoCommand(redo) \n\ m ~c Z: xfeDoCommand(undo) \n\ a ~c Z: xfeDoCommand(undo) \n ! Translations in the textfield portion of the mailing list view ! ! TraverseTranslations are for the text field: *abmlistTraverseTranslations: #override \ ~s ~c BackSpace: TableTraverse(BACKSPACE) \n\ ~s ~c Tab: TableTraverse(NEXT) \n\ s ~c Tab: TableTraverse(PREVIOUS) \n ! ! Translations for document source window *dialogGlobalTranslations: #override \ m ~c W: xfeDoCommand(close) \n\ a ~c W: xfeDoCommand(close) \n ! Mouse bindings in the HTML display area. ! *drawingArea.translations: #replace \ : ArmLink() \n\ : ArmLink() \n\ ~s : ActivateLink() \n\ ~s : ActivateLink(new-window) DisarmLink() \n\ s : ActivateLink(save-only) DisarmLink() \n\ s : ActivateLink(save-only) DisarmLink() \n\ : DisarmLinkIfMoved() \n\ : DisarmLinkIfMoved() \n\ : DisarmLinkIfMoved() \n\ : DescribeLink() \n\ : 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 "Ctrlg" 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 A: select-all() \n\ a ~c A: select-all() \n\ ~m ~a c a: beginning-of-line() \n\ s ~m ~a c a: beginning-of-line(extend) \n\ ~s ~m ~a c b: backward-character() \n\ s ~m ~a c b: backward-character(extend) \n\ ~m ~a c d: delete-next-character() \n\ ~s ~m ~a c e: end-of-line() \n\ s ~m ~a c e: end-of-line(extend) \n\ ~s ~m ~a c f: forward-character() \n\ s ~m ~a c f: forward-character(extend) \n\ ~m ~a c g: process-cancel() \n\ ~m ~a c h: delete-previous-character() \n\ ~m ~a c space: set-anchor() \n\ ~m ~a c 2: set-anchor() \n\ ~m ~a c @: set-anchor() \n\ \ ~s m ~c b: backward-word() \n\ ~s a ~c b: backward-word() \n\ s m ~c b: backward-word(extend) \n\ s a ~c b: backward-word(extend) \n\ ~s m ~c f: forward-word() \n\ ~s a ~c f: forward-word() \n\ s m ~c f: forward-word(extend) \n\ s a ~c f: forward-word(extend) \n\ ~s m ~c osfLeft: backward-word() \n\ ~s a ~c osfLeft: backward-word() \n\ s m ~c osfLeft: backward-word(extend) \n\ s a ~c osfLeft: backward-word(extend) \n\ ~s m ~c osfRight: forward-word() \n\ ~s a ~c osfRight: forward-word() \n\ s m ~c osfRight: forward-word(extend) \n\ s a ~c osfRight: forward-word(extend) \n ! : KeyUpInText() \n ! Meta ~Ctrl w: copy-clipboard() \n\ ! Alt ~Ctrl 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 \ : 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 x: xfeDoText(cut) \n\ m ~a ~c c: xfeDoText(copy) \n\ m ~a ~c v: xfeDoText(paste) \n\ m ~a ~c y: xfeDoText(paste) \n\ \ ~m a ~c x: xfeDoText(cut) \n\ ~m a ~c c: xfeDoText(copy) \n\ ~m a ~c v: xfeDoText(paste) \n\ ~m a ~c y: xfeDoText(paste) \n\ \ ~m ~a c y: xfeDoText(paste) \n\ \ ~m ~a ~c SunCopy: xfeDoText(copy) \n\ ~m ~a ~c SunPaste: xfeDoText(paste) \n\ ~m ~a ~c SunCut: xfeDoText(cut) \n\ \ ~m ~a c u: beginning-of-line() delete-to-end-of-line() \n\ ~m ~a c k: delete-to-end-of-line() \n\ ~m ~a c l: xfeDoCommand(refresh) \n\ ~m ~a c w: key-select() delete-selection() \n\ m ~c d: delete-next-word() \n\ a ~c d: delete-next-word() \n\ a ~c <: set-anchor() beginning-of-line() \n\ m ~c <: set-anchor() beginning-of-line() \n\ a ~c >: set-anchor() end-of-line() \n\ m ~c >: set-anchor() end-of-line() \n\ ~a c <: set-anchor() beginning-of-line(extend) \n\ ~m c <: set-anchor() beginning-of-line(extend) \n\ ~a c >: set-anchor() end-of-line(extend) \n\ ~m c >: set-anchor() end-of-line(extend) \n\ m ~c osfBackSpace: delete-previous-word() \n\ a ~c osfBackSpace: delete-previous-word() \n\ m ~c osfDelete: delete-next-word() \n\ a ~c osfDelete: delete-next-word() \n\ \ ~m ~a ~c osfLeft: deselect-all() backward-character() \n\ ~m ~a ~c 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 ~Shiftv: previous-page() \n\ ! Alt ~Ctrl ~Shiftv: previous-page() \n\ ! *multiLineEditingTranslations: #override \ m ~a ~c x: xfeDoText(cut) \n\ m ~a ~c c: xfeDoText(copy) \n\ m ~a ~c v: xfeDoText(paste) \n\ m ~a ~c y: xfeDoText(paste) \n\ \ ~m a ~c x: xfeDoText(cut) \n\ ~m a ~c c: xfeDoText(copy) \n\ ~m a ~c v: xfeDoText(paste) \n\ ~m a ~c y: xfeDoText(paste) \n\ \ ~m ~a c y: xfeDoText(paste) \n\ \ ~m ~a ~c SunCopy: xfeDoText(copy) \n\ ~m ~a ~c SunPaste: xfeDoText(paste) \n\ ~m ~a ~c SunCut: xfeDoText(cut) \n\ \ ~m ~a c k: kill-to-end-of-line() \n\ ~m ~a c w: key-select() kill-selection() \n\ ~m ~a c y: unkill() \n\ m ~c d: kill-next-word() \n\ a ~c d: kill-next-word() \n\ ~m ~a c l: redraw-display() xfeDoCommand(refresh) \n\ m ~c osfBackSpace: kill-previous-word() \n\ a ~c osfBackSpace: kill-previous-word() \n\ m ~c osfDelete: kill-next-word() \n\ a ~c osfDelete: kill-next-word() \n\ \ ~m ~a c j: newline-and-indent() \n\ ~m ~a c o: newline-and-backup() \n\ ~s ~m ~a c n: next-line() \n\ s ~m ~a c n: next-line(extend) \n\ ~s ~m ~a c p: previous-line() \n\ s ~m ~a c p: previous-line(extend) \n\ ~s ~m ~a c v: next-page() \n\ s ~m ~a c v: next-page(extend) \n\ ~s m c v: previous-page() \n\ ~s a c v: previous-page() \n\ s m ~c v: previous-page(extend) \n\ s a ~c v: previous-page(extend) \n\ ~s a ~c [: backward-paragraph() \n\ ~s m ~c [: backward-paragraph() \n\ s a ~c [: backward-paragraph(extend) \n\ s m ~c [: backward-paragraph(extend) \n\ ~s a ~c ]: forward-paragraph() \n\ ~s m ~c ]: forward-paragraph() \n\ s a ~c ]: forward-paragraph(extend) \n\ s m ~c [: forward-paragraph(extend) \n\ a ~c <: set-anchor() beginning-of-file() \n\ m ~c <: set-anchor() beginning-of-file() \n\ a ~c >: set-anchor() end-of-file() \n\ m ~c >: set-anchor() end-of-file() \n\ ~a c <: set-anchor() beginning-of-file(extend) \n\ ~m c <: set-anchor() beginning-of-file(extend) \n\ ~a c >: set-anchor() end-of-file(extend) \n\ ~m c >: set-anchor() end-of-file(extend) \n\ ~m ~a ~c Prior: previous-page() \n\ ~m ~a ~c Next: next-page() \n\ ~m ~a ~c osfPageUp: previous-page() \n\ ~m ~a ~c osfPageDown: next-page() \n\ c /: 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 : undefined-key() \n\ ! Meta : undefined-key() \n\ ! Alt : undefined-key() \n !*XmTextField.translations: #override \n\ ! Ctrl : undefined-key() \n\ ! Meta : undefined-key() \n\ ! Alt : 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 \ Return: next-tab-group() \n\ 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 \ Return: activate() \n\ 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 Up: LineUp() \n\ ~m ~a ~c Down: LineDown() \n\ ~m ~a ~c osfUp: LineUp() \n\ ~m ~a ~c osfDown: LineDown() \n ! These keysyms are apparently an R6ism. ! ~Meta ~Alt ~CtrlKP_Up: LineUp() \n\ ! ~Meta ~Alt ~CtrlKP_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 space: xfeDoCommand(spacebar) \n\ \ ~m ~a ~c Delete: PageUp() \n\ ~m ~a ~c BackSpace: PageUp() \n\ ~m ~a ~c Up: LineUp() \n\ ~m ~a ~c Down: LineDown() \n\ ~m ~a ~c Left: ColumnLeft() \n\ ~m ~a ~c Right: ColumnRight() \n\ \ ~m ~a ~c osfDelete: PageUp() \n\ ~m ~a ~c osfBackSpace: PageUp() \n\ m c g: fishcam() \n\ a c g: fishcam() \n\ m c t: net_showstatus() \n\ a c t: net_showstatus() \n\ ~m ~a ~c osfUp: LineUp() \n\ ~m ~a ~c osfDown: LineDown() \n\ ~m ~a ~c osfLeft: ColumnLeft() \n\ ~m ~a ~c osfRight: ColumnRight() \n\ \ ~m ~a ~c Prior: PageUp() \n\ ~m ~a ~c Next: PageDown() \n\ ~m ~a ~c osfPageUp: PageUp() \n\ ~m ~a ~c osfPageDown: PageDown() \n ! These keysyms are apparently an R6ism. ! ~Meta ~Alt ~CtrlKP_Up: LineUp() \n\ ! ~Meta ~Alt ~CtrlKP_Down: LineDown() \n\ ! ~Meta ~Alt ~CtrlKP_Left: ColumnLeft() \n\ ! ~Meta ~Alt ~CtrlKP_Right: ColumnRight() \n\ ! ~Meta ~Alt ~CtrlKP_Prior: PageUp() \n\ ! ~Meta ~Alt ~CtrlKP_Next: PageDown() \n\ !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! Editor mouse translations !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *editorDrawingArea.translations: #replace \ : xfeDoCommand(showPopup) \n\ s : xfeDoCommand(select,extend) \n\ : 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\ : xfeDoCommand(select,extend) \n\ : xfeDoCommand(select,end) \n\ : xfeDoCommand(paste,selection) \n\ : \n\ : \n\ : editor-motion() \n ! Editor keyboard translations. *editorTranslations: #override \ \ ~s m ~c o: xfeDoCommand(openPage) \n\ ~s a ~c o: xfeDoCommand(openPage) \n\ s m ~c o: xfeDoCommand(openPageChooseFile) \n\ s a ~c o: xfeDoCommand(openPageChooseFile) \n\ m ~c s: xfeDoCommand(save) \n\ a ~c s: xfeDoCommand(save) \n\ m ~c r: xfeDoCommand(reload) \n\ a ~c r: xfeDoCommand(reload) \n\ s m ~c r: xfeDoCommand(reload,super) \n\ s a ~c r: xfeDoCommand(reload,super) \n\ m ~c P: xfeDoCommand(print) \n\ a ~c P: xfeDoCommand(print) \n\ \ ~m ~a c h: xfeDoCommand(deleteItem,previous) \n\ m ~c Return: xfeDoCommand(sendMessageNow) \n\ a ~c Return: xfeDoCommand(sendMessageNow) \n\ ~m ~a ~c Up: xfeDoCommand(moveCursor,up) \n\ ~m ~a ~c Down: xfeDoCommand(moveCursor,down) \n\ ~m ~a ~c osfUp: xfeDoCommand(moveCursor,up) \n\ ~m ~a ~c osfDown: xfeDoCommand(moveCursor,down) \n\ ~m ~a ~c osfLeft: xfeDoCommand(moveCursor,previous) \n\ ~m ~a ~c osfRight: xfeDoCommand(moveCursor,next) \n\ ~m ~a c osfLeft: xfeDoCommand(moveCursor,previousWord) \n\ ~m ~a c osfRight: xfeDoCommand(moveCursor,nextWord) \n\ \ : ~m ~a ~c Delete: xfeDoCommand(deleteItem,next) \n\ : ~m ~a ~c BackSpace: xfeDoCommand(deleteItem,previous) \n\ : ~m ~a ~c osfDelete: xfeDoCommand(deleteItem,next) \n\ : ~m ~a ~c osfBackSpace: xfeDoCommand(deleteItem,previous) \n\ \ ~m ~a c Home: xfeDoCommand(moveCursor,beginningOfPage) \n\ ~m ~a c End: xfeDoCommand(moveCursor,endOfPage) \n\ ~m ~a c osfBeginLine: xfeDoCommand(moveCursor,beginningOfPage) \n\ ~m ~a c osfEndLine: xfeDoCommand(moveCursor,endOfPage) \n\ ~m ~a ~c Home: xfeDoCommand(moveCursor,beginningOfLine) \n\ ~m ~a ~c End: xfeDoCommand(moveCursor,endOfLine) \n\ ~m ~a ~c osfBeginLine: xfeDoCommand(moveCursor,beginOfLine) \n\ ~m ~a ~c osfEndLine: xfeDoCommand(moveCursor,endOfLine) \n\ s ~m ~a ~c Return: xfeDoCommand(insertLineBreak,normal) \n\ ~m ~a ~c Return: xfeDoCommand(insertReturn) \n\ s ~m ~a ~c space: xfeDoCommand(insertNonBreakingSpace) \n\ ~m ~a ~c space: xfeDoCommand(insertKey) \n\ ~m a ~c -: xfeDoCommand(outdent) \n\ ~m a ~c =: xfeDoCommand(indent) \n\ m ~a ~c -: xfeDoCommand(outdent) \n\ m ~a ~c =: xfeDoCommand(indent) \n\ \ ~s c Tab: xfeDoCommand(tab,insert) \n\ ~s ~c Tab: xfeDoCommand(tab,forward) \n\ s ~c Tab: xfeDoCommand(tab,backward) \n\ \ ~m ~a c a: xfeDoCommand(moveCursor,beginningOfLine) \n\ ~m ~a c e: xfeDoCommand(moveCursor,endOfLine) \n\ ~m ~a c p: xfeDoCommand(moveCursor,up) \n\ ~m ~a c n: xfeDoCommand(moveCursor,down) \n\ ~m ~a c b: xfeDoCommand(moveCursor,previous) \n\ ~m ~a c f: xfeDoCommand(moveCursor,next) \n\ ~m ~a c d: xfeDoCommand(deleteItem,next) \n\ ~m ~a c k: xfeDoCommand(deleteItem,endOfLine) \n\ m ~a ~c <: xfeDoCommand(moveCursor,beginningOfPage) \n\ m ~a ~c >: xfeDoCommand(moveCursor,endOfPage) \n\ ~m a ~c <: xfeDoCommand(moveCursor,beginningOfPage) \n\ ~m a ~c >: xfeDoCommand(moveCursor,endOfPage) \n\ \ s m ~c z: xfeDoCommand(redo) \n\ s a ~c z: xfeDoCommand(redo) \n\ m ~c z: xfeDoCommand(undo) \n\ a ~c z: xfeDoCommand(undo) \n\ \ m ~a ~c b: xfeDoCommand(toggleCharacterStyle,bold) \n\ ~m a ~c b: xfeDoCommand(toggleCharacterStyle,bold) \n\ m ~a ~c i: xfeDoCommand(toggleCharacterStyle,italic) \n\ ~m a ~c i: xfeDoCommand(toggleCharacterStyle,italic) \n\ m ~a ~c u: xfeDoCommand(toggleCharacterStyle,underline)\n\ ~m a ~c u: xfeDoCommand(toggleCharacterStyle,underline)\n\ m ~a ~c t: xfeDoCommand(toggleCharacterStyle,fixed) \n\ ~m a ~c t: xfeDoCommand(toggleCharacterStyle,fixed) \n\ m ~a ~c k: xfeDoCommand(setCharacterStyle,none) \n\ ~m a ~c k: xfeDoCommand(setCharacterStyle,none) \n\ \ ~m ~a c l: xfeDoCommand(refresh) \n\ \ ~s m ~a ~c Up: xfeDoCommand(setFontSize,increase) \n\ ~s m ~a ~c osfUp: xfeDoCommand(setFontSize,increase) \n\ ~s m ~a ~c Down: xfeDoCommand(setFontSize,decrease) \n\ ~s m ~a ~c osfDown: xfeDoCommand(setFontSize,decrease) \n\ \ ~m ~a ~c SunCopy: xfeDoCommand(copy) \n\ ~m ~a ~c SunPaste: xfeDoCommand(paste) \n\ ~m ~a ~c SunCut: xfeDoCommand(cut) \n\ \ ~s m ~a ~c d: xfeDoCommand(deleteItem) \n\ ~s ~m a ~c d: xfeDoCommand(deleteItem) \n\ \ ~s m ~a ~c f: xfeDoCommand(findInObject) \n\ ~s m ~a ~c g: xfeDoCommand(findAgain) \n\ ~s ~m a ~c f: xfeDoCommand(findInObject) \n\ ~s ~m a ~c g: xfeDoCommand(findAgain) \n\ \ m ~c A: xfeDoCommand(selectAll) \n\ a ~c A: xfeDoCommand(selectAll) \n\ m ~c C: xfeDoCommand(copy) \n\ a ~c C: xfeDoCommand(copy) \n\ m ~c H: xfeDoCommand(openHistory) \n\ a ~c H: xfeDoCommand(openHistory) \n\ m ~c m: xfeDoCommand(composeMessage) \n\ a ~c m: xfeDoCommand(composeMessage) \n\ ~s m ~c n: xfeDoCommand(openBrowser) \n\ ~s a ~c n: xfeDoCommand(openBrowser) \n\ s m ~c n: xfeDoCommand(newBlank) \n\ s a ~c n: xfeDoCommand(newBlank) \n\ m ~c Q: xfeDoCommand(exit) \n\ a ~c Q: xfeDoCommand(exit) \n\ m ~c R: undefined-key() \n\ a ~c R: undefined-key() \n\ m ~c V: xfeDoCommand(paste) \n\ a ~c V: xfeDoCommand(paste) \n\ m ~c W: xfeDoCommand(close) \n\ a ~c W: xfeDoCommand(close) \n\ m ~c X: xfeDoCommand(cut) \n\ a ~c X: xfeDoCommand(cut) \n\ m ~c Y: xfeDoCommand(paste) \n\ a ~c Y: xfeDoCommand(paste) \n\ \ ~s m ~c 1: xfeDoCommand(openOrBringUpBrowser) \n\ ~s a ~c 1: xfeDoCommand(openOrBringUpBrowser) \n\ s m ~c 1: xfeDoCommand(openFolders) \n\ s a ~c 1: xfeDoCommand(openFolders) \n\ ~s m ~c 2: xfeDoCommand(openInbox) \n\ ~s a ~c 2: xfeDoCommand(openInbox) \n\ s m ~c 2: xfeDoCommand(openAddrBook) \n\ s a ~c 2: xfeDoCommand(openAddrBook) \n\ m ~c 3: xfeDoCommand(openNewsgroups) \n\ a ~c 3: xfeDoCommand(openNewsgroups) \n\ m ~c 4: xfeDoCommand(openEditor) \n\ a ~c 4: xfeDoCommand(openEditor) \n\ m ~c 5: xfeDoCommand(openConference) \n\ a ~c 5: xfeDoCommand(openConference) \n\ m ~c 6: xfeDoCommand(openCalendar) \n\ a ~c 6: xfeDoCommand(openCalendar) \n\ m ~c 7: xfeDoCommand(openHostOnDemand) \n\ a ~c 7: xfeDoCommand(openHostOnDemand) \n\ m ~c 8: xfeDoCommand(openNetcaster) \n\ a ~c 8: xfeDoCommand(openNetcaster) \n\ \ ~m ~a ~c Prior: PageUp() \n\ ~m ~a ~c Next: PageDown() \n\ ~m ~a ~c osfPageUp: PageUp() \n\ ~m ~a ~c osfPageDown: PageDown() \n\ \ ~s ~m ~a ~c osfHelp: xfeDoCommand(manual) \n\ \ ~s ~m ~a ~c F10: \n\ ~s ~m ~a ~c osfMenuBar: \n\ \ : \n\ : xfeDoCommand(insertKey) \n\ : xfeDoCommand(insertKey) \n\ : \n\ : xfeDoCommand(insertKey) \n !=============================================================================