Browse Source

Ticket #2511: simplification and unification of keybinding names.

Added doc/keybind-migration.txt file to describe new keybinding names
used in mc.keymap.* files in 4.8.x series.
Cosmetics: reordering of keymap section declarations to provide identical
order totally in the source tree.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Andrew Borodin 14 years ago
parent
commit
68a8745f6d
9 changed files with 1402 additions and 1403 deletions
  1. 1 1
      doc/Makefile.am
  2. 59 0
      doc/keybind-migration.txt
  3. 242 253
      lib/keybind.c
  4. 234 245
      lib/keybind.h
  5. 194 209
      misc/mc.keymap.default
  6. 195 211
      misc/mc.keymap.emacs
  7. 420 421
      src/keybind-defaults.c
  8. 26 32
      src/keybind-defaults.h
  9. 31 31
      src/setup.c

+ 1 - 1
doc/Makefile.am

@@ -1,7 +1,7 @@
 DIST_SUBDIRS = hints man hlp
 SUBDIRS = hints man hlp
 
-DOCS = FAQ HACKING INSTALL INSTALL.FAST MAINTAINERS README.QNX
+DOCS = FAQ HACKING INSTALL INSTALL.FAST MAINTAINERS README.QNX keybind-migration.txt
 EXTRA_DIST = $(DX_CONFIG) doxygen-include.am $(DOCS)
 
 include doxygen-include.am

+ 59 - 0
doc/keybind-migration.txt

@@ -0,0 +1,59 @@
+
+This file describes how keybind names used in mc.keymap.* files
+are changed in 4.8.* releases.
+
++---------------------------------+-------------------------+-----------------------------------------+
+|            Old name             |        New name         |                 Notes                   |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                            [main] section                                           |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                          [main:xmap] section                                        |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                            [panel] section                                          |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                           [dialog] section                                          |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                            [input] section                                          |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                           [listbox] section                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                            [tree] section                                           |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                            [help] section                                           |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                           [editor] section                                          |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                        [editor:xmap] section                                        |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                          [viewer] section                                           |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                        [viewer:hex] section                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                        [diffviewer] section                                         |
++---------------------------------+-------------------------+-----------------------------------------+
+|                                 |                         |                                         |
++---------------------------------+-------------------------+-----------------------------------------+

+ 242 - 253
lib/keybind.c

@@ -3,6 +3,7 @@
 
    Written by:    2005        Vitja Makarov
    2009        Ilia Maslakov
+   2009, 2010  Andrew Borodin
 
    This file is part of the Midnight Commander.
 
@@ -43,7 +44,245 @@
 /*** file scope variables ************************************************************************/
 
 static name_keymap_t command_names[] = {
-    {"InsertChar", CK_Insert_Char},
+    /* common */
+    {"SelectCodepage", CK_SelectCodepage},
+    {"ShowCommandLine", CK_ShowCommandLine},
+    {"ExtMap1", CK_StartExtMap1},
+    {"ExtMap2", CK_StartExtMap2},
+
+    /* main commands */
+    {"CmdHelp", CK_HelpCmd},
+    {"CmdMenu", CK_MenuCmd},
+    {"CmdChmod", CK_ChmodCmd},
+    {"CmdMenuLastSelected", CK_MenuLastSelectedCmd},
+    {"CmdSingleDirsize", CK_SingleDirsizeCmd},
+    {"CmdCopyCurrentPathname", CK_CopyCurrentPathname},
+    {"CmdCopyOtherPathname", CK_CopyOtherPathname},
+    {"CmdSuspend", CK_SuspendCmd},
+    {"CmdToggleListing", CK_ToggleListingCmd},
+    {"CmdChownAdvanced", CK_ChownAdvancedCmd},
+    {"CmdChown", CK_ChownCmd},
+    {"CmdCompareDirs", CK_CompareDirsCmd},
+    {"CmdConfigureBox", CK_ConfigureBox},
+    {"CmdConfigureVfs", CK_ConfigureVfs},
+    {"CmdConfirmBox", CK_ConfirmBox},
+    {"CmdCopy", CK_CopyCmd},
+    {"CmdDelete", CK_DeleteCmd},
+    {"CmdDirsizes", CK_DirsizesCmd},
+    {"CmdDisplayBitsBox", CK_DisplayBitsBox},
+    {"CmdEdit", CK_EditCmd},
+#ifdef USE_INTERNAL_EDIT
+    {"CmdEditForceInternal", CK_EditForceInternalCmd},
+#endif
+    {"CmdEditExtFile", CK_EditExtFileCmd},
+    {"CmdEditFhlFile", CK_EditFhlFileCmd},
+    {"CmdEditMcMenu", CK_EditMcMenuCmd},
+    {"CmdEditSymlink", CK_EditSymlinkCmd},
+    {"CmdEditSyntax", CK_EditSyntaxCmd},
+    {"CmdEditUserMenu", CK_EditUserMenuCmd},
+    {"CmdExternalPanelize", CK_ExternalPanelize},
+    {"CmdFilter", CK_FilterCmd},
+    {"CmdFilteredView", CK_FilteredViewCmd},
+    {"CmdFind", CK_FindCmd},
+#ifdef ENABLE_VFS_FISH
+    {"CmdFishlink", CK_FishlinkCmd},
+#endif
+#ifdef ENABLE_VFS_FTP
+    {"CmdFtplink", CK_FtplinkCmd},
+#endif
+    {"CmdHistory", CK_HistoryCmd},
+    {"CmdInfo", CK_InfoCmd},
+#ifdef WITH_BACKGROUND
+    {"CmdJobs", CK_JobsCmd},
+#endif
+    {"CmdLayout", CK_LayoutBox},
+    {"CmdLearnKeys", CK_LearnKeys},
+    {"CmdLink", CK_LinkCmd},
+    {"CmdChangeListing", CK_ChangeListingCmd},
+    {"CmdListing", CK_ListingCmd},
+#ifdef LISTMODE_EDITOR
+    {"CmdListmodeCmd", CK_ListmodeCmd}.
+#endif
+    {"CmdMkdir", CK_MkdirCmd},
+    {"CmdPanelOptions", CK_PanelOptionsBox},
+    {"CmdQuickCd", CK_QuickCdCmd},
+    {"CmdQuickChdir", CK_QuickChdirCmd},
+    {"CmdQuickView", CK_QuickViewCmd},
+    {"CmdQuietQuit", CK_QuietQuitCmd},
+    {"CmdRelativeSymlink", CK_RelativeSymlinkCmd},
+    {"CmdRename", CK_RenameCmd},
+    {"CmdReread", CK_RereadCmd},
+    {"CmdReselectVfs", CK_ReselectVfs},
+    {"CmdReverseSelection", CK_ReverseSelectionCmd},
+    {"CmdSaveSetup", CK_SaveSetupCmd},
+    {"CmdSelect", CK_SelectCmd},
+#ifdef ENABLE_VFS_SMB
+    {"CmdSmblinkCmd", CK_SmblinkCmd},
+#endif
+    {"CmdSwapPanel", CK_SwapCmd},
+    {"CmdSymlink", CK_SymlinkCmd},
+    {"CmdTree", CK_TreeCmd},
+    {"CmdTreeBox", CK_TreeBoxCmd},
+#ifdef ENABLE_VFS_UNDELFS
+    {"CmdUndelete", CK_UndeleteCmd},
+#endif
+    {"CmdUnselect", CK_UnselectCmd},
+    {"CmdUserMenu", CK_UserMenuCmd},
+    {"CmdUserFileMenu", CK_UserFileMenuCmd},
+    {"CmdView", CK_ViewCmd},
+    {"CmdViewFile", CK_ViewFileCmd},
+    {"CmdCopyCurrentReadlink", CK_CopyCurrentReadlink},
+    {"CmdCopyOtherReadlink", CK_CopyOtherReadlink},
+    {"CmdAddHotlist", CK_AddHotlist},
+    {"CmdQuit", CK_QuitCmd},
+    {"CmdCopyCurrentTagged", CK_CopyCurrentTagged},
+    {"CmdCopyOtherTagged", CK_CopyOtherTagged},
+    {"CmdToggleShowHidden", CK_ToggleShowHidden},
+    {"CmdTogglePanelsSplit", CK_TogglePanelsSplit},
+#ifdef USE_DIFF_VIEW
+    {"CmdDiffView", CK_DiffViewCmd},
+#endif
+    {"CmdDialogList", CK_DialogListCmd},
+    {"CmdDialogNext", CK_DialogNextCmd},
+    {"CmdDialogPrev", CK_DialogPrevCmd},
+
+    /* panel */
+    {"PanelChdirOtherPanel", CK_PanelChdirOtherPanel},
+    {"PanelChdirToReadlink", CK_PanelChdirToReadlink},
+    {"PanelCopyLocal", CK_PanelCmdCopyLocal},
+    {"PanelDeleteLocal", CK_PanelCmdDeleteLocal},
+    {"PanelDoEnter", CK_PanelCmdDoEnter},
+    {"PanelEditNew", CK_PanelCmdEditNew},
+    {"PanelRenameLocal", CK_PanelCmdRenameLocal},
+    {"PanelReverseSelection", CK_PanelCmdReverseSelection},
+    {"PanelSelect", CK_PanelCmdSelect},
+    {"PanelUnselect", CK_PanelCmdUnselect},
+    {"PanelViewSimple", CK_PanelCmdViewSimple},
+    {"PanelGotoParentDir", CK_PanelGotoParentDir},
+    {"PanelGotoChildDir", CK_PanelGotoChildDir},
+    {"PanelDirectoryHistoryList", CK_PanelDirectoryHistoryList},
+    {"PanelDirectoryHistoryNext", CK_PanelDirectoryHistoryNext},
+    {"PanelDirectoryHistoryPrev", CK_PanelDirectoryHistoryPrev},
+    {"PanelGotoBottomFile", CK_PanelGotoBottomFile},
+    {"PanelGotoMiddleFile", CK_PanelGotoMiddleFile},
+    {"PanelGotoTopFile", CK_PanelGotoTopFile},
+    {"PanelMarkFile", CK_PanelMarkFile},
+    {"PanelMarkFileDown", CK_PanelMarkFileDown},
+    {"PanelMarkFileUp", CK_PanelMarkFileUp},
+    {"PanelMoveUp", CK_PanelMoveUp},
+    {"PanelMoveDown", CK_PanelMoveDown},
+    {"PanelMoveLeft", CK_PanelMoveLeft},
+    {"PanelMoveRight", CK_PanelMoveRight},
+    {"PanelMoveEnd", CK_PanelMoveEnd},
+    {"PanelMoveHome", CK_PanelMoveHome},
+    {"PanelNextPage", CK_PanelNextPage},
+    {"PanelPrevPage", CK_PanelPrevPage},
+#ifdef HAVE_CHARSET
+    {"PanelSetPanelEncoding", CK_PanelSetPanelEncoding},
+#endif
+    {"PanelStartSearch", CK_PanelStartSearch},
+    {"PanelSyncOtherPanel", CK_PanelSyncOtherPanel},
+    {"PanelToggleSortOrderNext", CK_PanelToggleSortOrderNext},
+    {"PanelToggleSortOrderPrev", CK_PanelToggleSortOrderPrev},
+    {"PanelSelectSortOrder", CK_PanelSelectSortOrder},
+    {"PanelReverseSort", CK_PanelReverseSort},
+    {"PanelSortOrderByName", CK_PanelSortOrderByName},
+    {"PanelSortOrderByExt", CK_PanelSortOrderByExt},
+    {"PanelSortOrderBySize", CK_PanelSortOrderBySize},
+    {"PanelSortOrderByMTime", CK_PanelSortOrderByMTime},
+    {"PanelSmartGotoParentDir", CK_PanelSmartGotoParentDir},
+
+    /* dialog */
+    {"DialogOK", CK_DialogOK},
+    {"DialogCancel", CK_DialogCancel},
+    {"DialogPrevItem", CK_DialogPrevItem},
+    {"DialogNextItem", CK_DialogNextItem},
+    {"DialogHelp", CK_DialogHelp},
+    {"DialogSuspend", CK_DialogSuspend},
+    {"DialogRefresh", CK_DialogRefresh},
+
+    /* input line */
+    {"InputBol", CK_InputBol},
+    {"InputEol", CK_InputEol},
+    {"InputMoveLeft", CK_InputMoveLeft},
+    {"InputWordLeft", CK_InputWordLeft},
+    {"InputBackwardChar", CK_InputBackwardChar},
+    {"InputBackwardWord", CK_InputBackwardWord},
+    {"InputMoveRight", CK_InputMoveRight},
+    {"InputWordRight", CK_InputWordRight},
+    {"InputForwardChar", CK_InputForwardChar},
+    {"InputForwardWord", CK_InputForwardWord},
+    {"InputBackwardDelete", CK_InputBackwardDelete},
+    {"InputDeleteChar", CK_InputDeleteChar},
+    {"InputKillWord", CK_InputKillWord},
+    {"InputBackwardKillWord", CK_InputBackwardKillWord},
+    {"InputSetMark", CK_InputSetMark},
+    {"InputKillRegion", CK_InputKillRegion},
+    {"InputYank", CK_InputYank},
+    {"InputKillLine", CK_InputKillLine},
+    {"InputHistoryPrev", CK_InputHistoryPrev},
+    {"InputHistoryNext", CK_InputHistoryNext},
+    {"InputHistoryShow", CK_InputHistoryShow},
+    {"InputComplete", CK_InputComplete},
+    {"InputXStore", CK_InputKillSave},
+    {"InputXPaste", CK_InputPaste},
+    {"InputClearLine", CK_InputClearLine},
+    {"InputLeftHighlight", CK_InputLeftHighlight},
+    {"InputRightHighlight", CK_InputRightHighlight},
+    {"InputWordLeftHighlight", CK_InputWordLeftHighlight},
+    {"InputWordRightHighlight", CK_InputWordRightHighlight},
+    {"InputBolHighlight", CK_InputBolHighlight},
+    {"InputEolHighlight", CK_InputEolHighlight},
+
+    /* listbox */
+    {"ListboxMoveUp", CK_ListboxMoveUp},
+    {"ListboxMoveDown", CK_ListboxMoveDown},
+    {"ListboxMoveHome", CK_ListboxMoveHome},
+    {"ListboxMoveEnd", CK_ListboxMoveEnd},
+    {"ListboxMovePgUp", CK_ListboxMovePgUp},
+    {"ListboxMovePgDn", CK_ListboxMovePgDn},
+    {"ListboxDeleteItem", CK_ListboxDeleteItem},
+    {"ListboxDeleteAll", CK_ListboxDeleteAll},
+
+    /* help */
+    {"HelpHelp", CK_HelpHelp},
+    {"HelpIndex", CK_HelpIndex},
+    {"HelpBack", CK_HelpBack},
+    {"HelpQuit", CK_HelpQuit},
+    {"HelpMoveUp", CK_HelpMoveUp},
+    {"HelpMoveDown", CK_HelpMoveDown},
+    {"HelpMovePgDn", CK_HelpMovePgDn},
+    {"HelpMovePgUp", CK_HelpMovePgUp},
+    {"HelpMoveHalfPgDn", CK_HelpMoveHalfPgDn},
+    {"HelpMoveHalfPgUp", CK_HelpMoveHalfPgUp},
+    {"HelpMoveTop", CK_HelpMoveTop},
+    {"HelpMoveBottom", CK_HelpMoveBottom},
+    {"HelpSelectLink", CK_HelpSelectLink},
+    {"HelpNextLink", CK_HelpNextLink},
+    {"HelpPrevLink", CK_HelpPrevLink},
+    {"HelpNextNode", CK_HelpNextNode},
+    {"HelpPrevNode", CK_HelpPrevNode},
+
+    /* tree */
+    {"TreeHelp", CK_TreeHelp},
+    {"TreeForget", CK_TreeForget},
+    {"TreeToggleNav", CK_TreeToggleNav},
+    {"TreeCopy", CK_TreeCopy},
+    {"TreeMove", CK_TreeMove},
+    {"TreeMake", CK_TreeMake},
+    {"TreeMoveUp", CK_TreeMoveUp},
+    {"TreeMoveDown", CK_TreeMoveDown},
+    {"TreeMoveLeft", CK_TreeMoveLeft},
+    {"TreeMoveRight", CK_TreeMoveRight},
+    {"TreeMoveHome", CK_TreeMoveHome},
+    {"TreeMoveEnd", CK_TreeMoveEnd},
+    {"TreeMovePgUp", CK_TreeMovePgUp},
+    {"TreeMovePgDn", CK_TreeMovePgDn},
+    {"TreeOpen", CK_TreeOpen},
+    {"TreeRescan", CK_TreeRescan},
+    {"TreeStartSearch", CK_TreeStartSearch},
+    {"TreeRemove", CK_TreeRemove},
+
 #ifdef USE_INTERNAL_EDIT
     {"EditNoCommand", CK_Ignore_Key},
     {"EditIgnoreKey", CK_Ignore_Key},
@@ -94,7 +333,6 @@ static name_keymap_t command_names[] = {
     {"EditReplace", CK_Replace},
     {"EditReplaceAgain", CK_Replace_Again},
     {"EditCompleteWord", CK_Complete_Word},
-
 #if 0
     {"EditDebugStart", CK_Debug_Start},
     {"EditDebugStop", CK_Debug_Stop},
@@ -158,7 +396,6 @@ static name_keymap_t command_names[] = {
     {"EditScrollDownHighlight", CK_Scroll_Down_Highlight},
     {"EditParagraphUpHighlight", CK_Paragraph_Up_Highlight},
     {"EditParagraphDownHighlight", CK_Paragraph_Down_Highlight},
-
     {"EditPageUpAltHighlight", CK_Page_Up_Alt_Highlight},
     {"EditPageDownAltHighlight", CK_Page_Down_Alt_Highlight},
     {"EditLeftAltHighlight", CK_Left_Alt_Highlight},
@@ -177,10 +414,8 @@ static name_keymap_t command_names[] = {
     {"EditScrollDownAltHighlight", CK_Scroll_Down_Alt_Highlight},
     {"EditParagraphUpAltHighlight", CK_Paragraph_Up_Alt_Highlight},
     {"EditParagraphDownAltHighlight", CK_Paragraph_Down_Alt_Highlight},
-
     {"EditShiftBlockLeft", CK_Shift_Block_Left},
     {"EditShiftBlockRight", CK_Shift_Block_Right},
-
     {"EditXStore", CK_XStore},
     {"EditXCut", CK_XCut},
     {"EditXPaste", CK_XPaste},
@@ -200,8 +435,6 @@ static name_keymap_t command_names[] = {
     {"EditSaveMode", CK_Edit_Save_Mode},
     {"EditChooseSyntax", CK_Choose_Syntax},
     {"EditAbout", CK_About},
-    {"EditPipeBlock", CK_Pipe_Block (0)},
-
 #if 0
     {"EditFocusNext", CK_Focus_Next},
     {"EditFocusPrev", CK_Focus_Prev},
@@ -210,9 +443,6 @@ static name_keymap_t command_names[] = {
     {"EditMake", CK_Make},
     {"EditErrorNext", CK_Error_Next},
     {"EditErrorPrev", CK_Error_Prev},
-#endif
-
-#if 0
     {"EditSaveDesktop", CK_Save_Desktop},
     {"EditNewWindow", CK_New_Window},
     {"EditCycle", CK_Cycle},
@@ -221,7 +451,6 @@ static name_keymap_t command_names[] = {
     {"EditCheckSaveAndQuit", CK_Check_Save_And_Quit},
     {"EditMaximize", CK_Maximize},
 #endif
-
 #endif /* USE_INTERNAL_EDIT */
 
     /* viewer */
@@ -257,246 +486,7 @@ static name_keymap_t command_names[] = {
     {"ViewToggleRuler", CK_ViewToggleRuler},
     {"ViewToggleHexNavMode", CK_ViewToggleHexNavMode},
 
-    /* help */
-    {"HelpHelp", CK_HelpHelp},
-    {"HelpIndex", CK_HelpIndex},
-    {"HelpBack", CK_HelpBack},
-    {"HelpQuit", CK_HelpQuit},
-    {"HelpMoveUp", CK_HelpMoveUp},
-    {"HelpMoveDown", CK_HelpMoveDown},
-    {"HelpMovePgDn", CK_HelpMovePgDn},
-    {"HelpMovePgUp", CK_HelpMovePgUp},
-    {"HelpMoveHalfPgDn", CK_HelpMoveHalfPgDn},
-    {"HelpMoveHalfPgUp", CK_HelpMoveHalfPgUp},
-    {"HelpMoveTop", CK_HelpMoveTop},
-    {"HelpMoveBottom", CK_HelpMoveBottom},
-    {"HelpSelectLink", CK_HelpSelectLink},
-    {"HelpNextLink", CK_HelpNextLink},
-    {"HelpPrevLink", CK_HelpPrevLink},
-    {"HelpNextNode", CK_HelpNextNode},
-    {"HelpPrevNode", CK_HelpPrevNode},
-
-    /* tree */
-    {"TreeHelp", CK_TreeHelp},
-    {"TreeForget", CK_TreeForget},
-    {"TreeToggleNav", CK_TreeToggleNav},
-    {"TreeCopy", CK_TreeCopy},
-    {"TreeMove", CK_TreeMove},
-    {"TreeMake", CK_TreeMake},
-    {"TreeMoveUp", CK_TreeMoveUp},
-    {"TreeMoveDown", CK_TreeMoveDown},
-    {"TreeMoveLeft", CK_TreeMoveLeft},
-    {"TreeMoveRight", CK_TreeMoveRight},
-    {"TreeMoveHome", CK_TreeMoveHome},
-    {"TreeMoveEnd", CK_TreeMoveEnd},
-    {"TreeMovePgUp", CK_TreeMovePgUp},
-    {"TreeMovePgDn", CK_TreeMovePgDn},
-    {"TreeOpen", CK_TreeOpen},
-    {"TreeRescan", CK_TreeRescan},
-    {"TreeStartSearch", CK_TreeStartSearch},
-    {"TreeRemove", CK_TreeRemove},
-
-    /* main commands */
-    {"CmdHelp", CK_HelpCmd},
-    {"CmdMenu", CK_MenuCmd},
-    {"CmdChmod", CK_ChmodCmd},
-    {"CmdMenuLastSelected", CK_MenuLastSelectedCmd},
-    {"CmdSingleDirsize", CK_SingleDirsizeCmd},
-    {"CmdCopyCurrentPathname", CK_CopyCurrentPathname},
-    {"CmdCopyOtherPathname", CK_CopyOtherPathname},
-    {"CmdSuspend", CK_SuspendCmd},
-    {"CmdToggleListing", CK_ToggleListingCmd},
-    {"CmdChownAdvanced", CK_ChownAdvancedCmd},
-    {"CmdChown", CK_ChownCmd},
-    {"CmdCompareDirs", CK_CompareDirsCmd},
-    {"CmdConfigureBox", CK_ConfigureBox},
-    {"CmdConfigureVfs", CK_ConfigureVfs},
-    {"CmdConfirmBox", CK_ConfirmBox},
-    {"CmdCopy", CK_CopyCmd},
-    {"CmdDelete", CK_DeleteCmd},
-    {"CmdDirsizes", CK_DirsizesCmd},
-    {"CmdDisplayBitsBox", CK_DisplayBitsBox},
-    {"CmdEdit", CK_EditCmd},
-#ifdef USE_INTERNAL_EDIT
-    {"CmdEditForceInternal", CK_EditForceInternalCmd},
-#endif
-    {"CmdEditExtFile", CK_EditExtFileCmd},
-    {"CmdEditFhlFile", CK_EditFhlFileCmd},
-    {"CmdEditMcMenu", CK_EditMcMenuCmd},
-    {"CmdEditSymlink", CK_EditSymlinkCmd},
-    {"CmdEditSyntax", CK_EditSyntaxCmd},
-    {"CmdEditUserMenu", CK_EditUserMenuCmd},
-    {"CmdExternalPanelize", CK_ExternalPanelize},
-    {"CmdFilter", CK_FilterCmd},
-    {"CmdFilteredView", CK_FilteredViewCmd},
-    {"CmdFind", CK_FindCmd},
-#ifdef ENABLE_VFS_FISH
-    {"CmdFishlink", CK_FishlinkCmd},
-#endif
-#ifdef ENABLE_VFS_FTP
-    {"CmdFtplink", CK_FtplinkCmd},
-#endif
-    {"CmdHistory", CK_HistoryCmd},
-    {"CmdInfo", CK_InfoCmd},
-#ifdef WITH_BACKGROUND
-    {"CmdJobs", CK_JobsCmd},
-#endif
-    {"CmdLayout", CK_LayoutBox},
-    {"CmdLearnKeys", CK_LearnKeys},
-    {"CmdLink", CK_LinkCmd},
-    {"CmdChangeListing", CK_ChangeListingCmd},
-    {"CmdListing", CK_ListingCmd},
-#ifdef LISTMODE_EDITOR
-    {"CmdListmodeCmd", CK_ListmodeCmd}.
-#endif
-    {"CmdMkdir", CK_MkdirCmd},
-    {"CmdPanelOptions", CK_PanelOptionsBox},
-    {"CmdQuickCd", CK_QuickCdCmd},
-    {"CmdQuickChdir", CK_QuickChdirCmd},
-    {"CmdQuickView", CK_QuickViewCmd},
-    {"CmdQuietQuit", CK_QuietQuitCmd},
-    {"CmdRelativeSymlink", CK_RelativeSymlinkCmd},
-    {"CmdRename", CK_RenameCmd},
-    {"CmdReread", CK_RereadCmd},
-    {"CmdReselectVfs", CK_ReselectVfs},
-    {"CmdReverseSelection", CK_ReverseSelectionCmd},
-    {"CmdSaveSetup", CK_SaveSetupCmd},
-    {"CmdSelect", CK_SelectCmd},
-#ifdef ENABLE_VFS_SMB
-    {"CmdSmblinkCmd", CK_SmblinkCmd},
-#endif
-    {"CmdSwapPanel", CK_SwapCmd},
-    {"CmdSymlink", CK_SymlinkCmd},
-    {"CmdTree", CK_TreeCmd},
-    {"CmdTreeBox", CK_TreeBoxCmd},
-#ifdef ENABLE_VFS_UNDELFS
-    {"CmdUndelete", CK_UndeleteCmd},
-#endif
-    {"CmdUnselect", CK_UnselectCmd},
-    {"CmdUserMenu", CK_UserMenuCmd},
-    {"CmdUserFileMenu", CK_UserFileMenuCmd},
-    {"CmdView", CK_ViewCmd},
-    {"CmdViewFile", CK_ViewFileCmd},
-    {"CmdCopyCurrentReadlink", CK_CopyCurrentReadlink},
-    {"CmdCopyOtherReadlink", CK_CopyOtherReadlink},
-    {"CmdAddHotlist", CK_AddHotlist},
-    {"CmdQuit", CK_QuitCmd},
-    {"CmdCopyCurrentTagged", CK_CopyCurrentTagged},
-    {"CmdCopyOtherTagged", CK_CopyOtherTagged},
-    {"CmdToggleShowHidden", CK_ToggleShowHidden},
-    {"CmdTogglePanelsSplit", CK_TogglePanelsSplit},
 #ifdef USE_DIFF_VIEW
-    {"CmdDiffView", CK_DiffViewCmd},
-#endif
-    {"CmdDialogList", CK_DialogListCmd},
-    {"CmdDialogNext", CK_DialogNextCmd},
-    {"CmdDialogPrev", CK_DialogPrevCmd},
-
-    /* panel */
-    {"PanelChdirOtherPanel", CK_PanelChdirOtherPanel},
-    {"PanelChdirToReadlink", CK_PanelChdirToReadlink},
-    {"PanelCopyLocal", CK_PanelCmdCopyLocal},
-    {"PanelDeleteLocal", CK_PanelCmdDeleteLocal},
-    {"PanelDoEnter", CK_PanelCmdDoEnter},
-    {"PanelEditNew", CK_PanelCmdEditNew},
-    {"PanelRenameLocal", CK_PanelCmdRenameLocal},
-    {"PanelReverseSelection", CK_PanelCmdReverseSelection},
-    {"PanelSelect", CK_PanelCmdSelect},
-    {"PanelUnselect", CK_PanelCmdUnselect},
-    {"PanelViewSimple", CK_PanelCmdViewSimple},
-    {"PanelGotoParentDir", CK_PanelGotoParentDir},
-    {"PanelGotoChildDir", CK_PanelGotoChildDir},
-    {"PanelDirectoryHistoryList", CK_PanelDirectoryHistoryList},
-    {"PanelDirectoryHistoryNext", CK_PanelDirectoryHistoryNext},
-    {"PanelDirectoryHistoryPrev", CK_PanelDirectoryHistoryPrev},
-    {"PanelGotoBottomFile", CK_PanelGotoBottomFile},
-    {"PanelGotoMiddleFile", CK_PanelGotoMiddleFile},
-    {"PanelGotoTopFile", CK_PanelGotoTopFile},
-    {"PanelMarkFile", CK_PanelMarkFile},
-    {"PanelMarkFileDown", CK_PanelMarkFileDown},
-    {"PanelMarkFileUp", CK_PanelMarkFileUp},
-    {"PanelMoveUp", CK_PanelMoveUp},
-    {"PanelMoveDown", CK_PanelMoveDown},
-    {"PanelMoveLeft", CK_PanelMoveLeft},
-    {"PanelMoveRight", CK_PanelMoveRight},
-    {"PanelMoveEnd", CK_PanelMoveEnd},
-    {"PanelMoveHome", CK_PanelMoveHome},
-    {"PanelNextPage", CK_PanelNextPage},
-    {"PanelPrevPage", CK_PanelPrevPage},
-#ifdef HAVE_CHARSET
-    {"PanelSetPanelEncoding", CK_PanelSetPanelEncoding},
-#endif
-    {"PanelStartSearch", CK_PanelStartSearch},
-    {"PanelSyncOtherPanel", CK_PanelSyncOtherPanel},
-    {"PanelToggleSortOrderNext", CK_PanelToggleSortOrderNext},
-    {"PanelToggleSortOrderPrev", CK_PanelToggleSortOrderPrev},
-    {"PanelSelectSortOrder", CK_PanelSelectSortOrder},
-    {"PanelReverseSort", CK_PanelReverseSort},
-    {"PanelSortOrderByName", CK_PanelSortOrderByName},
-    {"PanelSortOrderByExt", CK_PanelSortOrderByExt},
-    {"PanelSortOrderBySize", CK_PanelSortOrderBySize},
-    {"PanelSortOrderByMTime", CK_PanelSortOrderByMTime},
-    {"PanelSmartGotoParentDir", CK_PanelSmartGotoParentDir},
-
-    /* input line */
-    {"InputBol", CK_InputBol},
-    {"InputEol", CK_InputEol},
-    {"InputMoveLeft", CK_InputMoveLeft},
-    {"InputWordLeft", CK_InputWordLeft},
-    {"InputBackwardChar", CK_InputBackwardChar},
-    {"InputBackwardWord", CK_InputBackwardWord},
-    {"InputMoveRight", CK_InputMoveRight},
-    {"InputWordRight", CK_InputWordRight},
-    {"InputForwardChar", CK_InputForwardChar},
-    {"InputForwardWord", CK_InputForwardWord},
-    {"InputBackwardDelete", CK_InputBackwardDelete},
-    {"InputDeleteChar", CK_InputDeleteChar},
-    {"InputKillWord", CK_InputKillWord},
-    {"InputBackwardKillWord", CK_InputBackwardKillWord},
-    {"InputSetMark", CK_InputSetMark},
-    {"InputKillRegion", CK_InputKillRegion},
-    {"InputYank", CK_InputYank},
-    {"InputKillLine", CK_InputKillLine},
-    {"InputHistoryPrev", CK_InputHistoryPrev},
-    {"InputHistoryNext", CK_InputHistoryNext},
-    {"InputHistoryShow", CK_InputHistoryShow},
-    {"InputComplete", CK_InputComplete},
-    {"InputXStore", CK_InputKillSave},
-    {"InputXPaste", CK_InputPaste},
-    {"InputClearLine", CK_InputClearLine},
-    {"InputLeftHighlight", CK_InputLeftHighlight},
-    {"InputRightHighlight", CK_InputRightHighlight},
-    {"InputWordLeftHighlight", CK_InputWordLeftHighlight},
-    {"InputWordRightHighlight", CK_InputWordRightHighlight},
-    {"InputBolHighlight", CK_InputBolHighlight},
-    {"InputEolHighlight", CK_InputEolHighlight},
-
-    /* listbox */
-    {"ListboxMoveUp", CK_ListboxMoveUp},
-    {"ListboxMoveDown", CK_ListboxMoveDown},
-    {"ListboxMoveHome", CK_ListboxMoveHome},
-    {"ListboxMoveEnd", CK_ListboxMoveEnd},
-    {"ListboxMovePgUp", CK_ListboxMovePgUp},
-    {"ListboxMovePgDn", CK_ListboxMovePgDn},
-    {"ListboxDeleteItem", CK_ListboxDeleteItem},
-    {"ListboxDeleteAll", CK_ListboxDeleteAll},
-
-    /* common */
-    {"ExtMap1", CK_StartExtMap1},
-    {"ExtMap2", CK_StartExtMap2},
-    {"ShowCommandLine", CK_ShowCommandLine},
-    {"SelectCodepage", CK_SelectCodepage},
-
-    /* dialog */
-    {"DialogOK", CK_DialogOK},
-    {"DialogCancel", CK_DialogCancel},
-    {"DialogPrevItem", CK_DialogPrevItem},
-    {"DialogNextItem", CK_DialogNextItem},
-    {"DialogHelp", CK_DialogHelp},
-    {"DialogSuspend", CK_DialogSuspend},
-    {"DialogRefresh", CK_DialogRefresh},
-
-#ifdef  USE_DIFF_VIEW
     /* diff viewer */
     {"DiffDisplaySymbols", CK_DiffDisplaySymbols},
     {"DiffDisplayNumbers", CK_DiffDisplayNumbers},
@@ -532,16 +522,15 @@ static name_keymap_t command_names[] = {
     {"DiffEnd", CK_DiffEnd},
     {"DiffQuit", CK_DiffQuit},
     {"DiffHelp", CK_DiffHelp},
-    {"SelectCodepage", CK_SelectCodepage},
     {"DiffMergeCurrentHunk", CK_DiffMergeCurrentHunk},
     {"DiffSave", CK_DiffSave},
     {"DiffOptions", CK_DiffOptions},
-#endif
+#endif /* USE_DIFF_VIEW */
 
     {NULL, CK_Ignore_Key}
 };
 
-static const size_t num_command_names = sizeof (command_names) / sizeof (command_names[0]) - 1;
+static const size_t num_command_names = G_N_ELEMENTS (command_names) - 1;
 
 /*** file scope functions ************************************************************************/
 /* --------------------------------------------------------------------------------------------- */

+ 234 - 245
lib/keybind.h

@@ -14,6 +14,230 @@
 #define CK_Insert_Char -1
 #define CK_Ignore_Key   0
 
+/* common */
+#define CK_SelectCodepage               2002
+#define CK_ShowCommandLine              2001
+#define CK_StartExtMap1                 2021
+#define CK_StartExtMap2                 2022
+
+/* main commands */
+#define CK_AddHotlist                   7001
+#define CK_ChangeListingCmd             7002
+#define CK_ChmodCmd                     7003
+#define CK_ChownAdvancedCmd             7004
+#define CK_ChownCmd                     7005
+#define CK_CompareDirsCmd               7006
+#define CK_ConfigureBox                 7007
+#define CK_ConfigureVfs                 7008
+#define CK_ConfirmBox                   7009
+#define CK_CopyCmd                      7010
+#define CK_CopyCurrentPathname          7011
+#define CK_CopyCurrentReadlink          7012
+#define CK_CopyCurrentTagged            7013
+#define CK_CopyOtherPathname            7014
+#define CK_CopyOtherReadlink            7015
+#define CK_CopyOtherTagged              7016
+#define CK_DeleteCmd                    7017
+#define CK_DirsizesCmd                  7018
+#define CK_DisplayBitsBox               7019
+#define CK_EditCmd                      7020
+#define CK_EditExtFileCmd               7021
+#define CK_EditFhlFileCmd               7022
+#define CK_EditMcMenuCmd                7023
+#define CK_EditSymlinkCmd               7024
+#define CK_EditSyntaxCmd                7025
+#define CK_EditUserMenuCmd              7026
+#define CK_ExternalPanelize             7027
+#define CK_FilterCmd                    7028
+#define CK_FilteredViewCmd              7029
+#define CK_FindCmd                      7030
+#define CK_FishlinkCmd                  7031
+#define CK_FtplinkCmd                   7032
+#define CK_HistoryCmd                   7033
+#define CK_InfoCmd                      7034
+#define CK_JobsCmd                      7035
+#define CK_LayoutBox                    7036
+#define CK_LearnKeys                    7037
+#define CK_LinkCmd                      7038
+#define CK_ListingCmd                   7039
+#define CK_ListmodeCmd                  7042
+#define CK_MenuLastSelectedCmd          7044
+#define CK_MkdirCmd                     7045
+#define CK_QuickCdCmd                   7047
+#define CK_QuickChdirCmd                7048
+#define CK_QuickViewCmd                 7049
+#define CK_QuietQuitCmd                 7050
+#define CK_QuitCmd                      7051
+#define CK_RenameCmd                    7052
+#define CK_RereadCmd                    7053
+#define CK_ReselectVfs                  7054
+#define CK_ReverseSelectionCmd          7055
+#define CK_SaveSetupCmd                 7056
+#define CK_SelectCmd                    7057
+#define CK_SingleDirsizeCmd             7058
+#define CK_SmblinkCmd                   7059
+#define CK_SuspendCmd                   7060
+#define CK_SwapCmd                      7061
+#define CK_SymlinkCmd                   7062
+#define CK_ToggleListingCmd             7063
+#define CK_ToggleShowHidden             7064
+#define CK_TreeCmd                      7065
+#define CK_TreeBoxCmd                   7066
+#define CK_UndeleteCmd                  7067
+#define CK_UnselectCmd                  7068
+#define CK_UserFileMenuCmd              7069
+#define CK_UserMenuCmd                  7070
+#define CK_ViewCmd                      7071
+#define CK_ViewFileCmd                  7072
+#define CK_HelpCmd                      7073
+#define CK_MenuCmd                      7074
+#define CK_TogglePanelsSplit            7075
+#define CK_DiffViewCmd                  7076
+#define CK_PanelOptionsBox              7077
+#define CK_RelativeSymlinkCmd           7078
+#define CK_DialogListCmd                7079
+#define CK_DialogNextCmd                7080
+#define CK_DialogPrevCmd                7081
+#define CK_EditForceInternalCmd         7082
+
+/* panels */
+#define CK_PanelChdirOtherPanel         8001
+#define CK_PanelChdirToReadlink         8002
+#define CK_PanelCmdCopyLocal            8003
+#define CK_PanelCmdDeleteLocal          8004
+#define CK_PanelCmdDoEnter              8005
+#define CK_PanelCmdEditNew              8006
+#define CK_PanelCmdRenameLocal          8007
+#define CK_PanelCmdReverseSelection     8008
+#define CK_PanelCmdSelect               8009
+#define CK_PanelCmdUnselect             8010
+#define CK_PanelCmdViewSimple           8011
+#define CK_PanelGotoChildDir            8012
+#define CK_PanelGotoParentDir           8013
+#define CK_PanelDirectoryHistoryList    8014
+#define CK_PanelDirectoryHistoryNext    8015
+#define CK_PanelDirectoryHistoryPrev    8016
+#define CK_PanelGotoBottomFile          8017
+#define CK_PanelGotoMiddleFile          8018
+#define CK_PanelGotoTopFile             8019
+#define CK_PanelMarkFile                8020
+#define CK_PanelMarkFileUp              8021
+#define CK_PanelMarkFileDown            8022
+#define CK_PanelMoveDown                8023
+#define CK_PanelMoveEnd                 8024
+#define CK_PanelMoveHome                8025
+#define CK_PanelMoveUp                  8026
+#define CK_PanelMoveLeft                8027
+#define CK_PanelMoveRight               8028
+#define CK_PanelNextPage                8029
+#define CK_PanelPrevPage                8030
+#define CK_PanelSetPanelEncoding        8031
+#define CK_PanelStartSearch             8032
+#define CK_PanelStopSearch              8033
+#define CK_PanelSyncOtherPanel          8034
+#define CK_PanelToggleSortOrderNext     8035
+#define CK_PanelToggleSortOrderPrev     8036
+#define CK_PanelSelectSortOrder         8037
+#define CK_PanelReverseSort             8038
+#define CK_PanelSortOrderByName         8039
+#define CK_PanelSortOrderByExt          8040
+#define CK_PanelSortOrderBySize         8041
+#define CK_PanelSortOrderByMTime        8042
+#define CK_PanelSmartGotoParentDir      8043
+
+/* dialog */
+#define CK_DialogOK                    3001
+#define CK_DialogCancel                3002
+#define CK_DialogPrevItem              3003
+#define CK_DialogNextItem              3004
+#define CK_DialogHelp                  3005
+#define CK_DialogSuspend               3006
+#define CK_DialogRefresh               3007
+
+/* input */
+#define CK_InputBol                    4001
+#define CK_InputEol                    4002
+#define CK_InputMoveLeft               4003
+#define CK_InputWordLeft               4004
+#define CK_InputBackwardChar           4005
+#define CK_InputBackwardWord           4006
+#define CK_InputMoveRight              4007
+#define CK_InputWordRight              4008
+#define CK_InputForwardChar            4009
+#define CK_InputForwardWord            4010
+#define CK_InputBackwardDelete         4011
+#define CK_InputDeleteChar             4012
+#define CK_InputKillWord               4013
+#define CK_InputBackwardKillWord       4014
+#define CK_InputSetMark                4015
+#define CK_InputKillRegion             4016
+#define CK_InputKillSave               4017
+#define CK_InputYank                   4018
+#define CK_InputCopyRegion             4019
+#define CK_InputKillLine               4020
+#define CK_InputHistoryPrev            4021
+#define CK_InputHistoryNext            4022
+#define CK_InputHistoryShow            4023
+#define CK_InputComplete               4024
+#define CK_InputPaste                  4025
+#define CK_InputClearLine              4026
+#define CK_InputLeftHighlight          4027
+#define CK_InputRightHighlight         4028
+#define CK_InputWordLeftHighlight      4029
+#define CK_InputWordRightHighlight     4030
+#define CK_InputBolHighlight           4031
+#define CK_InputEolHighlight           4032
+
+/* listbox */
+#define CK_ListboxMoveUp               4500
+#define CK_ListboxMoveDown             4501
+#define CK_ListboxMoveHome             4502
+#define CK_ListboxMoveEnd              4503
+#define CK_ListboxMovePgUp             4504
+#define CK_ListboxMovePgDn             4505
+#define CK_ListboxDeleteItem           4506
+#define CK_ListboxDeleteAll            4507
+
+/* help */
+#define CK_HelpHelp                     1001
+#define CK_HelpIndex                    1002
+#define CK_HelpBack                     1003
+#define CK_HelpQuit                     1004
+#define CK_HelpMoveUp                   1005
+#define CK_HelpMoveDown                 1006
+#define CK_HelpSelectLink               1007
+#define CK_HelpNextLink                 1008
+#define CK_HelpPrevLink                 1009
+#define CK_HelpNextNode                 1010
+#define CK_HelpPrevNode                 1011
+#define CK_HelpMovePgDn                 1012
+#define CK_HelpMovePgUp                 1013
+#define CK_HelpMoveHalfPgDn             1014
+#define CK_HelpMoveHalfPgUp             1015
+#define CK_HelpMoveTop                  1016
+#define CK_HelpMoveBottom               1017
+
+/* tree */
+#define CK_TreeHelp                     6001
+#define CK_TreeForget                   6003
+#define CK_TreeToggleNav                6004
+#define CK_TreeCopy                     6005
+#define CK_TreeMove                     6006
+#define CK_TreeMake                     6007
+#define CK_TreeMoveUp                   6011
+#define CK_TreeMoveDown                 6012
+#define CK_TreeMoveLeft                 6013
+#define CK_TreeMoveRight                6014
+#define CK_TreeMoveHome                 6015
+#define CK_TreeMoveEnd                  6016
+#define CK_TreeMovePgUp                 6017
+#define CK_TreeMovePgDn                 6018
+#define CK_TreeOpen                     6019
+#define CK_TreeRescan                   6020
+#define CK_TreeStartSearch              6021
+#define CK_TreeRemove                   6022
+
+#ifdef USE_INTERNAL_EDIT
 /* cursor movements */
 #define CK_BackSpace         1
 #define CK_Delete            2
@@ -42,7 +266,6 @@
 #define CK_Delete_Word_Right 25
 #define CK_Paragraph_Up      26
 #define CK_Paragraph_Down    27
-
 /* file commands */
 #define CK_Save             101
 #define CK_Load             102
@@ -53,7 +276,6 @@
 #define CK_Load_Syntax_File 121
 #define CK_Load_Menu_File   122
 #define CK_Menu             123
-
 /* block commands */
 #define CK_Mark              201
 #define CK_Copy              202
@@ -74,7 +296,6 @@
 #define CK_Replace       303
 #define CK_Replace_Again 304
 #define CK_Complete_Word 305
-
 #if 0
 /* debugger commands */
 #define CK_Debug_Start         350
@@ -88,8 +309,6 @@
 #define CK_Debug_Enter_Command 358
 #define CK_Debug_Until_Curser  359
 #endif
-
-/* misc */
 #define CK_Insert_File          401
 #define CK_Quit                 402
 #define CK_Toggle_Insert        403
@@ -120,7 +339,6 @@
 #define CK_Edit_Save_Mode       428
 #define CK_Choose_Syntax        429
 #define CK_About                430
-
 #if 0
 /* application control */
 #define CK_Save_Desktop        451
@@ -131,23 +349,19 @@
 #define CK_Check_Save_And_Quit 457
 #define CK_Maximize            458
 #endif
-
 #define CK_Toggle_Show_Margin 460
 #define CK_Toggle_Tab_TWS     470
 #define CK_Toggle_Syntax      480
 #define CK_Toggle_Line_State  490
-
 /* macro */
 #define CK_Begin_Record_Macro 501
 #define CK_End_Record_Macro   502
 #define CK_Delete_Macro       503
-
 /* book mark */
 #define CK_Toggle_Bookmark 550
 #define CK_Flush_Bookmarks 551
 #define CK_Next_Bookmark   552
 #define CK_Prev_Bookmark   553
-
 /* highlight commands */
 #define CK_Page_Up_Highlight           604
 #define CK_Page_Down_Highlight         605
@@ -167,7 +381,6 @@
 #define CK_Scroll_Down_Highlight       619
 #define CK_Paragraph_Up_Highlight      620
 #define CK_Paragraph_Down_Highlight    621
-
 /* alt highlight commands */
 #define CK_Page_Up_Alt_Highlight           654
 #define CK_Page_Down_Alt_Highlight         655
@@ -187,101 +400,20 @@
 #define CK_Scroll_Down_Alt_Highlight       669
 #define CK_Paragraph_Up_Alt_Highlight      670
 #define CK_Paragraph_Down_Alt_Highlight    671
-
 /* X clipboard operations */
-#define CK_XStore                        701
-#define CK_XCut                          702
-#define CK_XPaste                        703
-#define CK_Selection_History             704
-
-#define CK_Shell                         801
-
+#define CK_XStore            701
+#define CK_XCut              702
+#define CK_XPaste            703
+#define CK_Selection_History 704
+#define CK_Shell           801
 /* C-x or similar */
-#define CK_Ext_Mode                      820
-
-#define CK_Insert_Literal                851
+#define CK_Ext_Mode        820
+#define CK_Insert_Literal  851
 #define CK_Begin_End_Macro               853
 #define CK_Begin_End_Repeat              854
 #define CK_Begin_Record_Repeat           855
 #define CK_End_Record_Repeat             856
-
-/* help */
-#define CK_HelpHelp                     1001
-#define CK_HelpIndex                    1002
-#define CK_HelpBack                     1003
-#define CK_HelpQuit                     1004
-#define CK_HelpMoveUp                   1005
-#define CK_HelpMoveDown                 1006
-#define CK_HelpSelectLink               1007
-#define CK_HelpNextLink                 1008
-#define CK_HelpPrevLink                 1009
-#define CK_HelpNextNode                 1010
-#define CK_HelpPrevNode                 1011
-#define CK_HelpMovePgDn                 1012
-#define CK_HelpMovePgUp                 1013
-#define CK_HelpMoveHalfPgDn             1014
-#define CK_HelpMoveHalfPgUp             1015
-#define CK_HelpMoveTop                  1016
-#define CK_HelpMoveBottom               1017
-
-/* common */
-#define CK_ShowCommandLine              2001
-#define CK_SelectCodepage               2002
-#define CK_StartExtMap1                 2021
-#define CK_StartExtMap2                 2022
-
-/* dialog */
-#define CK_DialogOK                    3001
-#define CK_DialogCancel                3002
-#define CK_DialogPrevItem              3003
-#define CK_DialogNextItem              3004
-#define CK_DialogHelp                  3005
-#define CK_DialogSuspend               3006
-#define CK_DialogRefresh               3007
-
-/* text fields */
-#define CK_InputBol                    4001
-#define CK_InputEol                    4002
-#define CK_InputMoveLeft               4003
-#define CK_InputWordLeft               4004
-#define CK_InputBackwardChar           4005
-#define CK_InputBackwardWord           4006
-#define CK_InputMoveRight              4007
-#define CK_InputWordRight              4008
-#define CK_InputForwardChar            4009
-#define CK_InputForwardWord            4010
-#define CK_InputBackwardDelete         4011
-#define CK_InputDeleteChar             4012
-#define CK_InputKillWord               4013
-#define CK_InputBackwardKillWord       4014
-#define CK_InputSetMark                4015
-#define CK_InputKillRegion             4016
-#define CK_InputKillSave               4017
-#define CK_InputYank                   4018
-#define CK_InputCopyRegion             4019
-#define CK_InputKillLine               4020
-#define CK_InputHistoryPrev            4021
-#define CK_InputHistoryNext            4022
-#define CK_InputHistoryShow            4023
-#define CK_InputComplete               4024
-#define CK_InputPaste                  4025
-#define CK_InputClearLine              4026
-#define CK_InputLeftHighlight          4027
-#define CK_InputRightHighlight         4028
-#define CK_InputWordLeftHighlight      4029
-#define CK_InputWordRightHighlight     4030
-#define CK_InputBolHighlight           4031
-#define CK_InputEolHighlight           4032
-
-/* listbox */
-#define CK_ListboxMoveUp               4500
-#define CK_ListboxMoveDown             4501
-#define CK_ListboxMoveHome             4502
-#define CK_ListboxMoveEnd              4503
-#define CK_ListboxMovePgUp             4504
-#define CK_ListboxMovePgDn             4505
-#define CK_ListboxDeleteItem           4506
-#define CK_ListboxDeleteAll            4507
+#endif /* USE_INTERNAL_EDIT */
 
 /* viewer */
 #define CK_ViewHelp                     5001
@@ -316,151 +448,7 @@
 #define CK_ViewMoveLeft10               5030
 #define CK_ViewMoveRight10              5031
 
-/* tree */
-#define CK_TreeHelp                     6001
-#define CK_TreeForget                   6003
-#define CK_TreeToggleNav                6004
-#define CK_TreeCopy                     6005
-#define CK_TreeMove                     6006
-#define CK_TreeMake                     6007
-#define CK_TreeMoveUp                   6011
-#define CK_TreeMoveDown                 6012
-#define CK_TreeMoveLeft                 6013
-#define CK_TreeMoveRight                6014
-#define CK_TreeMoveHome                 6015
-#define CK_TreeMoveEnd                  6016
-#define CK_TreeMovePgUp                 6017
-#define CK_TreeMovePgDn                 6018
-#define CK_TreeOpen                     6019
-#define CK_TreeRescan                   6020
-#define CK_TreeStartSearch              6021
-#define CK_TreeRemove                   6022
-
-/* main commands */
-#define CK_AddHotlist                   7001
-#define CK_ChangeListingCmd             7002
-#define CK_ChmodCmd                     7003
-#define CK_ChownAdvancedCmd             7004
-#define CK_ChownCmd                     7005
-#define CK_CompareDirsCmd               7006
-#define CK_ConfigureBox                 7007
-#define CK_ConfigureVfs                 7008
-#define CK_ConfirmBox                   7009
-#define CK_CopyCmd                      7010
-#define CK_CopyCurrentPathname          7011
-#define CK_CopyCurrentReadlink          7012
-#define CK_CopyCurrentTagged            7013
-#define CK_CopyOtherPathname            7014
-#define CK_CopyOtherReadlink            7015
-#define CK_CopyOtherTagged              7016
-#define CK_DeleteCmd                    7017
-#define CK_DirsizesCmd                  7018
-#define CK_DisplayBitsBox               7019
-#define CK_EditCmd                      7020
-#define CK_EditExtFileCmd               7021
-#define CK_EditFhlFileCmd               7022
-#define CK_EditMcMenuCmd                7023
-#define CK_EditSymlinkCmd               7024
-#define CK_EditSyntaxCmd                7025
-#define CK_EditUserMenuCmd              7026
-#define CK_ExternalPanelize             7027
-#define CK_FilterCmd                    7028
-#define CK_FilteredViewCmd              7029
-#define CK_FindCmd                      7030
-#define CK_FishlinkCmd                  7031
-#define CK_FtplinkCmd                   7032
-#define CK_HistoryCmd                   7033
-#define CK_InfoCmd                      7034
-#define CK_JobsCmd                      7035
-#define CK_LayoutBox                    7036
-#define CK_LearnKeys                    7037
-#define CK_LinkCmd                      7038
-#define CK_ListingCmd                   7039
-#define CK_ListmodeCmd                  7042
-#define CK_MenuLastSelectedCmd          7044
-#define CK_MkdirCmd                     7045
-#define CK_QuickCdCmd                   7047
-#define CK_QuickChdirCmd                7048
-#define CK_QuickViewCmd                 7049
-#define CK_QuietQuitCmd                 7050
-#define CK_QuitCmd                      7051
-#define CK_RenameCmd                    7052
-#define CK_RereadCmd                    7053
-#define CK_ReselectVfs                  7054
-#define CK_ReverseSelectionCmd          7055
-#define CK_SaveSetupCmd                 7056
-#define CK_SelectCmd                    7057
-#define CK_SingleDirsizeCmd             7058
-#define CK_SmblinkCmd                   7059
-#define CK_SuspendCmd                   7060
-#define CK_SwapCmd                      7061
-#define CK_SymlinkCmd                   7062
-#define CK_ToggleListingCmd             7063
-#define CK_ToggleShowHidden             7064
-#define CK_TreeCmd                      7065
-#define CK_TreeBoxCmd                   7066
-#define CK_UndeleteCmd                  7067
-#define CK_UnselectCmd                  7068
-#define CK_UserFileMenuCmd              7069
-#define CK_UserMenuCmd                  7070
-#define CK_ViewCmd                      7071
-#define CK_ViewFileCmd                  7072
-#define CK_HelpCmd                      7073
-#define CK_MenuCmd                      7074
-#define CK_TogglePanelsSplit            7075
-#define CK_DiffViewCmd                  7076
-#define CK_PanelOptionsBox              7077
-#define CK_RelativeSymlinkCmd           7078
-#define CK_DialogListCmd                7079
-#define CK_DialogNextCmd                7080
-#define CK_DialogPrevCmd                7081
-#define CK_EditForceInternalCmd         7082
-
-/* panels */
-#define CK_PanelChdirOtherPanel         8001
-#define CK_PanelChdirToReadlink         8002
-#define CK_PanelCmdCopyLocal            8003
-#define CK_PanelCmdDeleteLocal          8004
-#define CK_PanelCmdDoEnter              8005
-#define CK_PanelCmdEditNew              8006
-#define CK_PanelCmdRenameLocal          8007
-#define CK_PanelCmdReverseSelection     8008
-#define CK_PanelCmdSelect               8009
-#define CK_PanelCmdUnselect             8010
-#define CK_PanelCmdViewSimple           8011
-#define CK_PanelGotoChildDir            8012
-#define CK_PanelGotoParentDir           8013
-#define CK_PanelDirectoryHistoryList    8014
-#define CK_PanelDirectoryHistoryNext    8015
-#define CK_PanelDirectoryHistoryPrev    8016
-#define CK_PanelGotoBottomFile          8017
-#define CK_PanelGotoMiddleFile          8018
-#define CK_PanelGotoTopFile             8019
-#define CK_PanelMarkFile                8020
-#define CK_PanelMarkFileUp              8021
-#define CK_PanelMarkFileDown            8022
-#define CK_PanelMoveDown                8023
-#define CK_PanelMoveEnd                 8024
-#define CK_PanelMoveHome                8025
-#define CK_PanelMoveUp                  8026
-#define CK_PanelMoveLeft                8027
-#define CK_PanelMoveRight               8028
-#define CK_PanelNextPage                8029
-#define CK_PanelPrevPage                8030
-#define CK_PanelSetPanelEncoding        8031
-#define CK_PanelStartSearch             8032
-#define CK_PanelStopSearch              8033
-#define CK_PanelSyncOtherPanel          8034
-#define CK_PanelToggleSortOrderNext     8035
-#define CK_PanelToggleSortOrderPrev     8036
-#define CK_PanelSelectSortOrder         8037
-#define CK_PanelReverseSort             8038
-#define CK_PanelSortOrderByName         8039
-#define CK_PanelSortOrderByExt          8040
-#define CK_PanelSortOrderBySize         8041
-#define CK_PanelSortOrderByMTime        8042
-#define CK_PanelSmartGotoParentDir      8043
-
+#ifdef USE_DIFF_VIEW
 /* diff viewer */
 #define CK_DiffDisplaySymbols           9001
 #define CK_DiffDisplayNumbers           9002
@@ -499,6 +487,7 @@
 #define CK_DiffSave                     9036
 #define CK_DiffContinueSearch           9037
 #define CK_DiffOptions                  9038
+#endif /* USE_DIFF_VIEW */
 
 #define CK_Pipe_Block(i) (10000+(i))
 #define CK_Macro(i)      (20000+(i))

+ 194 - 209
misc/mc.keymap.default

@@ -1,12 +1,204 @@
+[main]
+CmdHelp = f1
+CmdUserMenu = f2
+CmdView = f3
+CmdViewFile = f13
+CmdEdit = f4
+CmdEditForceInternal =
+CmdCopy = f5
+CmdRename = f6
+CmdMkdir = f7
+CmdDelete = f8
+CmdMenu = f9
+CmdQuit = f10
+CmdMenuLastSelected = f19
+CmdQuietQuit = f20
+CmdFind = alt-question
+CmdQuickCd = alt-c
+CmdQuickChdir = ctrl-backslash
+CmdReread = ctrl-r
+CmdSingleDirsize = ctrl-space
+CmdSuspend = ctrl-z
+CmdSwapPanel = ctrl-u
+CmdHistory = alt-h
+CmdListing =
+CmdToggleListing = alt-t
+CmdToggleShowHidden = alt-dot
+CmdTogglePanelsSplit = alt-comma
+ShowCommandLine = ctrl-o
+CmdCopyCurrentPathname = alt-a
+CmdCopyOtherPathname = alt-shift-a
+CmdFilteredView = alt-exclamation
+CmdSelect = kpplus
+CmdUnselect = kpminus
+CmdReverseSelection = kpasterisk
+CmdDialogList = alt-prime
+ExtMap1 = ctrl-x
+
+[main:xmap]
+CmdChmod = c
+CmdChown = o
+CmdCompareDirs = d
+CmdEditSymlink = ctrl-s
+CmdLink = l
+CmdSymlink = s
+CmdRelativeSymlink = v
+CmdInfo = i
+CmdQuickView = q
+CmdExternalPanelize = exclamation
+CmdReselectVfs = a
+CmdJobs = j
+CmdCopyCurrentPathname = p
+CmdCopyOtherPathname = ctrl-p
+CmdCopyCurrentTagged = t
+CmdCopyOtherTagged = ctrl-t
+CmdDiffView = ctrl-d
+
+[panel]
+PanelStartSearch = ctrl-s; alt-s
+PanelMarkFile = insert; ctrl-t
+PanelMarkFileUp = shift-up
+PanelMarkFileDown = shift-down
+PanelMoveDown = down; ctrl-n
+PanelMoveUp = up; ctrl-p
+PanelMoveLeft = left
+PanelMoveRight = right
+PanelPrevPage = pgup; alt-v
+PanelNextPage = pgdn; ctrl-v
+PanelDoEnter = enter
+PanelChdirOtherPanel = alt-o
+PanelChdirToReadlink = alt-l
+PanelViewSimple = F13
+PanelEditNew = F14
+PanelCopyLocal = F15
+PanelRenameLocal = F16
+PanelDeleteLocal = F18
+PanelReverseSelection = alt-asterisk
+PanelSelect = alt-plus
+PanelUnselect = alt-minus
+PanelGotoChildDir = ctrl-pgdn
+PanelGotoParentDir = ctrl-pgup
+PanelDirectoryHistoryList = alt-shift-h
+PanelDirectoryHistoryNext = alt-u
+PanelDirectoryHistoryPrev = alt-y
+PanelGotoBottomFile = alt-j
+PanelGotoMiddleFile = alt-r
+PanelSyncOtherPanel = alt-i
+PanelGotoTopFile = alt-g
+PanelSetPanelEncoding = alt-e
+PanelMoveHome = alt-lt; home; a1
+PanelMoveEnd = alt-gt; end; c1
+PanelSelectSortOrder =
+PanelToggleSortOrderPrev =
+PanelToggleSortOrderNext =
+PanelReverseSort =
+PanelSortOrderByName =
+PanelSortOrderByExt =
+PanelSortOrderBySize =
+PanelSortOrderByMTime =
+PanelSmartGotoParentDir =
+
+[dialog]
+DialogOK = enter
+DialogCancel = f10; esc; ctrl-g
+DialogPrevItem = left; up
+DialogNextItem = right; down
+DialogHelp = f1
+DialogSuspend = ctrl-z
+DialogRefresh = ctrl-l
+CmdDialogList = alt-prime
+CmdDialogNext = alt-rbrace
+CmdDialogPrev = alt-lbrace
+
+[input]
+InputBol = ctrl-a; alt-lt; home; a1
+InputEol = ctrl-e; alt-gt; end; c1
+InputMoveLeft = left; alt-left
+InputWordLeft = ctrl-left
+InputBackwardChar = ctrl-b
+InputBackwardWord = alt-b
+InputMoveRight = right; alt-right
+InputWordRight = ctrl-right
+InputForwardChar = ctrl-f
+InputForwardWord = alt-f
+InputBackwardDelete = backspace; ctrl-h
+InputDeleteChar = delete; ctrl-d
+InputKillWord = alt-d
+InputBackwardKillWord = alt-backspace
+InputSetMark =
+InputKillRegion = ctrl-w
+InputXCut =
+InputXStore = alt-w
+InputXPaste =
+InputYank = ctrl-y
+InputKillLine = ctrl-k
+InputHistoryPrev = alt-p; ctrl-down
+InputHistoryNext = alt-n; ctrl-up
+InputHistoryShow = alt-h
+InputComplete = alt-tab
+InputClearLine =
+InputLeftHighlight = shift-left
+InputRightHighlight = shift-right
+InputWordLeftHighlight = ctrl-shift-left
+InputWordRightHighlight = ctrl-shift-right
+InputBolHighlight = shift-home
+InputEolHighlight = shift-end
+
+[listbox]
+ListboxMoveUp = up; ctrl-p
+ListboxMoveDown = down; ctrl-n
+ListboxMoveHome = home; alt-lt; a1
+ListboxMoveEnd = end; alt-gt; c1
+ListboxMovePgUp = pgup; alt-v
+ListboxMovePgDn = pgdn; ctrl-v
+ListboxDeleteItem = delete; d
+ListboxDeleteAll = shift-delete; shift-d
+
+[tree]
+TreeHelp = f1
+TreeForget = f3
+TreeToggleNav = f4
+TreeCopy = f5
+TreeMove = f6
+TreeMoveUp = up; ctrl-p
+TreeMoveDown = down; ctrl-n
+TreeMoveLeft = left
+TreeMoveRight = right
+TreeMoveHome = home; alt-lt; a1
+TreeMoveEnd = end; alt-gt; c1
+TreeMovePgUp = pgup; alt-v
+TreeMovePgDn = pgdn; ctrl-v
+TreeOpen = enter
+TreeRescan = f2; ctrl-r
+TreeStartSearch = ctrl-s; alt-s
+TreeRemove = f8; delete
+
+[help]
+HelpHelp = f1
+HelpIndex = f2; c
+HelpBack = f3; left; l
+HelpQuit = f10; esc; ctrl-g
+HelpMoveUp = up; ctrl-p
+HelpMoveDown = down; ctrl-n
+HelpMovePgDn = f; space; pgdn; ctrl-v
+HelpMovePgUp = b; pgup; alt-v; backspace
+HelpMoveHalfPgDn = d
+HelpMoveHalfPgUp = u
+HelpMoveTop = home; ctrl-home; ctrl-pgup; a1; alt-lt; g
+HelpMoveBottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g
+HelpSelectLink = right; enter
+HelpNextLink = tab
+HelpPrevLink = alt-tab
+HelpNextNode = n
+HelpPrevNode = p
+
 [editor]
 EditXStore = ctrl-insert
 EditXPaste = shift-insert
 EditXCut = shift-delete
-
 EditDeleteLine = ctrl-y
 EditDeleteToLineEnd = ctrl-k
 EditDeleteToLineBegin =
-
 EditLeft = left
 EditRight = right
 EditUp = up
@@ -47,10 +239,8 @@ EditUnmark =
 EditFind = f7
 EditMarkLine =
 EditMarkWord =
-
 EditShiftBlockLeft =
 EditShiftBlockRight =
-
 EditPageUpHighlight = shift-pgup
 EditPageDownHighlight = shift-pgdn
 EditLeftHighlight = shift-left
@@ -69,7 +259,6 @@ EditScrollUpHighlight = ctrl-shift-up
 EditScrollDownHighlight = ctrl-shift-down
 EditParagraphUpHighlight =
 EditParagraphDownHighlight =
-
 EditPageUpAltHighlight = alt-pgup
 EditPageDownAltHighlight = alt-pgdn
 EditLeftAltHighlight = alt-left
@@ -88,7 +277,6 @@ EditScrollUpAltHighlight =
 EditScrollDownAltHighlight =
 EditParagraphUpAltHighlight =
 EditParagraphDownAltHighlight =
-
 EditSaveBlock = ctrl-f
 EditColumnMark = f13
 EditFindAgain = f17
@@ -117,7 +305,6 @@ EditSort = alt-t
 EditMail = alt-m
 EditCancel =
 EditComplete =
-
 EditParagraphFormat = alt-p
 EditUtil =
 EditTypeLoadPython =
@@ -140,28 +327,21 @@ EditToggleBookmark = alt-k
 EditFlushBookmarks = alt-o
 EditNextBookmark = alt-j
 EditPrevBookmark = alt-i
-
 EditSelectionHistory =
 EditShell = ctrl-o
 EditInsertLiteral = ctrl-q
-
 EditBeginRecordMacro =
 EditEndRecordMacro =
 EditBeginOrEndMacro = ctrl-r
-EditExecuteMacro = ctrl-a
 EditDeleteMacro =
-
 EditToggleLineState = alt-n
 EditToggleTabTWS = alt-underline
 EditToggleSyntax = ctrl-s
 EditToggleShowMargin =
-
 EditFindDefinition = alt-enter
 EditLoadPrevFile = alt-minus
 EditLoadNextFile = alt-plus
-
 EditBeginEndRepeat =
-
 SelectCodepage = alt-e
 
 [viewer]
@@ -218,201 +398,6 @@ ViewMovePgUp = pgup; alt-v
 ViewMoveTop = home; ctrl-home; ctrl-pgup; a1; alt-lt; g
 ViewMoveBottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g
 
-[main]
-CmdHelp = f1
-CmdUserMenu = f2
-CmdView = f3
-CmdViewFile = f13
-CmdEdit = f4
-CmdEditForceInternal =
-CmdCopy = f5
-CmdRename = f6
-CmdMkdir = f7
-CmdDelete = f8
-CmdMenu = f9
-CmdQuit = f10
-CmdMenuLastSelected = f19
-CmdQuietQuit = f20
-CmdFind = alt-question
-CmdQuickCd = alt-c
-CmdQuickChdir = ctrl-backslash
-CmdReread = ctrl-r
-CmdSingleDirsize = ctrl-space
-CmdSuspend = ctrl-z
-CmdSwapPanel = ctrl-u
-CmdHistory = alt-h
-CmdListing =
-CmdToggleListing = alt-t
-CmdToggleShowHidden = alt-dot
-CmdTogglePanelsSplit = alt-comma
-ShowCommandLine = ctrl-o
-CmdCopyCurrentPathname = alt-a
-CmdCopyOtherPathname = alt-shift-a
-CmdFilteredView = alt-exclamation
-CmdSelect = kpplus
-CmdUnselect = kpminus
-CmdReverseSelection = kpasterisk
-CmdDialogList = alt-prime
-ExtMap1 = ctrl-x
-
-[main:xmap]
-CmdChmod = c
-CmdChown = o
-CmdCompareDirs = d
-CmdEditSymlink = ctrl-s
-CmdLink = l
-CmdSymlink = s
-CmdRelativeSymlink = v
-CmdInfo = i
-CmdQuickView = q
-CmdExternalPanelize = exclamation
-CmdReselectVfs = a
-CmdJobs = j
-CmdCopyCurrentPathname = p
-CmdCopyOtherPathname = ctrl-p
-CmdCopyCurrentTagged = t
-CmdCopyOtherTagged = ctrl-t
-CmdDiffView = ctrl-d
-
-[panel]
-PanelStartSearch = ctrl-s; alt-s
-PanelMarkFile = insert; ctrl-t
-PanelMarkFileUp = shift-up
-PanelMarkFileDown = shift-down
-PanelMoveDown = down; ctrl-n
-PanelMoveUp = up; ctrl-p
-PanelMoveLeft = left
-PanelMoveRight = right
-PanelPrevPage = pgup; alt-v
-PanelNextPage = pgdn; ctrl-v
-PanelDoEnter = enter
-PanelChdirOtherPanel = alt-o
-PanelChdirToReadlink = alt-l
-PanelViewSimple = F13
-PanelEditNew = F14
-PanelCopyLocal = F15
-PanelRenameLocal = F16
-PanelDeleteLocal = F18
-PanelReverseSelection = alt-asterisk
-PanelSelect = alt-plus
-PanelUnselect = alt-minus
-PanelGotoChildDir = ctrl-pgdn
-PanelGotoParentDir = ctrl-pgup
-PanelDirectoryHistoryList = alt-shift-h
-PanelDirectoryHistoryNext = alt-u
-PanelDirectoryHistoryPrev = alt-y
-PanelGotoBottomFile = alt-j
-PanelGotoMiddleFile = alt-r
-PanelSyncOtherPanel = alt-i
-PanelGotoTopFile = alt-g
-PanelSetPanelEncoding = alt-e
-PanelMoveHome = alt-lt; home; a1
-PanelMoveEnd = alt-gt; end; c1
-PanelSelectSortOrder=
-PanelToggleSortOrderPrev=
-PanelToggleSortOrderNext=
-PanelReverseSort=
-PanelSortOrderByName=
-PanelSortOrderByExt=
-PanelSortOrderBySize=
-PanelSortOrderByMTime=
-PanelSmartGotoParentDir=
-
-[input]
-InputBol = ctrl-a; alt-lt; home; a1
-InputEol = ctrl-e; alt-gt; end; c1
-InputMoveLeft = left; alt-left
-InputWordLeft = ctrl-left
-InputBackwardChar = ctrl-b
-InputBackwardWord = alt-b
-InputMoveRight = right; alt-right
-InputWordRight = ctrl-right
-InputForwardChar = ctrl-f
-InputForwardWord = alt-f
-InputBackwardDelete = backspace; ctrl-h
-InputDeleteChar = delete; ctrl-d
-InputKillWord = alt-d
-InputBackwardKillWord = alt-backspace
-InputSetMark =
-InputKillRegion = ctrl-w
-InputXCut =
-InputXStore = alt-w
-InputXPaste =
-InputYank = ctrl-y
-InputKillLine = ctrl-k
-InputHistoryPrev = alt-p; ctrl-down
-InputHistoryNext = alt-n; ctrl-up
-InputHistoryShow = alt-h
-InputComplete = alt-tab
-InputClearLine =
-InputLeftHighlight = shift-left
-InputRightHighlight = shift-right
-InputWordLeftHighlight = ctrl-shift-left
-InputWordRightHighlight = ctrl-shift-right
-InputBolHighlight = shift-home
-InputEolHighlight = shift-end
-
-[listbox]
-ListboxMoveUp = up; ctrl-p
-ListboxMoveDown = down; ctrl-n
-ListboxMoveHome = home; alt-lt; a1
-ListboxMoveEnd = end; alt-gt; c1
-ListboxMovePgUp = pgup; alt-v
-ListboxMovePgDn = pgdn; ctrl-v
-ListboxDeleteItem = delete; d
-ListboxDeleteAll = shift-delete; shift-d
-
-[tree]
-TreeHelp = f1
-TreeForget = f3
-TreeToggleNav = f4
-TreeCopy = f5
-TreeMove = f6
-TreeMoveUp = up; ctrl-p
-TreeMoveDown = down; ctrl-n
-TreeMoveLeft = left
-TreeMoveRight = right
-TreeMoveHome = home; alt-lt; a1
-TreeMoveEnd = end; alt-gt; c1
-TreeMovePgUp = pgup; alt-v
-TreeMovePgDn = pgdn; ctrl-v
-TreeOpen = enter
-TreeRescan = f2; ctrl-r
-TreeStartSearch = ctrl-s; alt-s
-TreeRemove = f8; delete
-
-[help]
-HelpHelp = f1
-HelpIndex = f2; c
-HelpBack = f3; left; l
-HelpQuit = f10; esc; ctrl-g
-HelpMoveUp = up; ctrl-p
-HelpMoveDown = down; ctrl-n
-HelpMovePgDn = f; space; pgdn; ctrl-v
-HelpMovePgUp = b; pgup; alt-v; backspace
-HelpMoveHalfPgDn = d
-HelpMoveHalfPgUp = u
-HelpMoveTop = home; ctrl-home; ctrl-pgup; a1; alt-lt; g
-HelpMoveBottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g
-HelpSelectLink = right; enter
-HelpNextLink = tab
-HelpPrevLink = alt-tab
-HelpNextNode = n
-HelpPrevNode = p
-
-[dialog]
-DialogOK = enter
-DialogCancel = f10; esc; ctrl-g
-DialogPrevItem = left; up
-DialogNextItem = right; down
-DialogHelp = f1
-DialogSuspend = ctrl-z
-DialogRefresh = ctrl-l
-CmdDialogList = alt-prime
-CmdDialogNext = alt-rbrace
-CmdDialogPrev = alt-lbrace
-
-
 [diffviewer]
 DiffDisplaySymbols = alt-s; s
 DiffDisplayNumbers = alt-n; l

+ 195 - 211
misc/mc.keymap.emacs

@@ -1,12 +1,204 @@
+[main]
+CmdHelp = f1
+CmdUserMenu = f2
+CmdView = f3
+CmdViewFile = f13
+CmdEdit = f4
+CmdEditForceInternal =
+CmdCopy = f5
+CmdRename = f6
+CmdMkdir = f7
+CmdDelete = f8
+CmdMenu = f9
+CmdQuit = f10
+CmdMenuLastSelected = f19
+CmdQuietQuit = f20
+CmdFind = alt-question
+CmdQuickCd = alt-c
+CmdQuickChdir = ctrl-backslash
+CmdReread = ctrl-r
+CmdSingleDirsize = ctrl-space
+CmdSuspend = ctrl-z
+CmdSwapPanel = ctrl-u
+CmdHistory = alt-h
+CmdListing =
+CmdToggleListing = alt-t
+CmdToggleShowHidden = alt-dot
+CmdTogglePanelsSplit = alt-comma
+ShowCommandLine = ctrl-o
+CmdCopyCurrentPathname = alt-a
+CmdCopyOtherPathname = alt-shift-a
+CmdFilteredView = alt-exclamation
+CmdSelect = kpplus
+CmdUnselect = kpminus
+CmdReverseSelection = kpasterisk
+CmdDialogList = alt-prime
+ExtMap1 = ctrl-x
+
+[main:xmap]
+CmdChmod = c
+CmdChown = o
+CmdCompareDirs = d
+CmdEditSymlink = ctrl-s
+CmdLink = l
+CmdSymlink = s
+CmdRelativeSymlink = v
+CmdInfo = i
+CmdQuickView = q
+CmdExternalPanelize = exclamation
+CmdReselectVfs = a
+CmdJobs = j
+CmdCopyCurrentPathname = p
+CmdCopyOtherPathname = ctrl-p
+CmdCopyCurrentTagged = t
+CmdCopyOtherTagged = ctrl-t
+CmdDiffView = ctrl-d
+
+[panel]
+PanelStartSearch = ctrl-s; alt-s
+PanelMarkFile = insert; ctrl-t
+PanelMarkFileUp = shift-up
+PanelMarkFileDown = shift-down
+PanelMoveDown = down; ctrl-n
+PanelMoveUp = up; ctrl-p
+PanelMoveLeft = left
+PanelMoveRight = right
+PanelPrevPage = pgup; alt-v
+PanelNextPage = pgdn; ctrl-v
+PanelDoEnter = enter
+PanelChdirOtherPanel = alt-o
+PanelChdirToReadlink = alt-l
+PanelViewSimple = F13
+PanelEditNew = F14
+PanelCopyLocal = F15
+PanelRenameLocal = F16
+PanelDeleteLocal = F18
+PanelReverseSelection = alt-asterisk
+PanelSelect = alt-plus
+PanelUnselect = alt-minus
+PanelGotoChildDir = ctrl-pgdn
+PanelGotoParentDir = ctrl-pgup
+PanelDirectoryHistoryList = alt-shift-h
+PanelDirectoryHistoryNext = alt-u
+PanelDirectoryHistoryPrev = alt-y
+PanelGotoBottomFile = alt-j
+PanelGotoMiddleFile = alt-r
+PanelSyncOtherPanel = alt-i
+PanelGotoTopFile = alt-g
+PanelSetPanelEncoding = alt-e
+PanelMoveHome = alt-lt; home; a1
+PanelMoveEnd = alt-gt; end; c1
+PanelSelectSortOrder =
+PanelToggleSortOrderPrev =
+PanelToggleSortOrderNext =
+PanelReverseSort =
+PanelSortOrderByName =
+PanelSortOrderByExt =
+PanelSortOrderBySize =
+PanelSortOrderByMTime =
+PanelSmartGotoParentDir =
+
+[dialog]
+DialogOK = enter
+DialogCancel = f10; esc; ctrl-g
+DialogPrevItem = left; up
+DialogNextItem = right; down
+DialogHelp = f1
+DialogSuspend = ctrl-z
+DialogRefresh = ctrl-l
+CmdDialogList = alt-prime
+CmdDialogNext = alt-rbrace
+CmdDialogPrev = alt-lbrace
+
+[input]
+InputBol = ctrl-a; alt-lt; home; a1
+InputEol = ctrl-e; alt-gt; end; c1
+InputMoveLeft = left; alt-left
+InputWordLeft = ctrl-left
+InputBackwardChar = ctrl-b
+InputBackwardWord = alt-b
+InputMoveRight = right; alt-right
+InputWordRight = ctrl-right
+InputForwardChar = ctrl-f
+InputForwardWord = alt-f
+InputBackwardDelete = backspace
+InputDeleteChar = delete
+InputKillWord = alt-d
+InputBackwardKillWord = alt-backspace
+InputSetMark =
+InputKillRegion = ctrl-w
+InputXCut =
+InputXStore = alt-w
+InputXPaste =
+InputYank = ctrl-y
+InputKillLine = ctrl-k
+InputHistoryPrev = alt-p; ctrl-down
+InputHistoryNext = alt-n; ctrl-up
+InputHistoryShow = alt-h
+InputComplete = alt-tab
+InputClearLine =
+InputLeftHighlight =
+InputRightHighlight =
+InputWordLeftHighlight =
+InputWordRightHighlight =
+InputBolHighlight =
+InputEolHighlight =
+
+[listbox]
+ListboxMoveUp = up; ctrl-p
+ListboxMoveDown = down; ctrl-n
+ListboxMoveHome = home; alt-lt; a1
+ListboxMoveEnd = end; alt-gt; c1
+ListboxMovePgUp = pgup; alt-v
+ListboxMovePgDn = pgdn; ctrl-v
+ListboxDeleteItem = delete; d
+ListboxDeleteAll = shift-delete; shift-d
+
+[tree]
+TreeHelp = f1
+TreeForget = f3
+TreeToggleNav = f4
+TreeCopy = f5
+TreeMove = f6
+TreeMoveUp = up; ctrl-p
+TreeMoveDown = down; ctrl-n
+TreeMoveLeft = left
+TreeMoveRight = right
+TreeMoveHome = home; alt-lt; a1
+TreeMoveEnd = end; alt-gt; c1
+TreeMovePgUp = pgup; alt-v
+TreeMovePgDn = pgdn; ctrl-v
+TreeOpen = enter
+TreeRescan = f2; ctrl-r
+TreeStartSearch = ctrl-s; alt-s
+TreeRemove = f8; delete
+
+[help]
+HelpHelp = f1
+HelpIndex = f2; c
+HelpBack = f3; left; l
+HelpQuit = f10; esc; ctrl-g
+HelpMoveUp = up; ctrl-p
+HelpMoveDown = down; ctrl-n
+HelpMovePgDn = f; space; pgdn; ctrl-v
+HelpMovePgUp = b; pgup; alt-v; backspace
+HelpMoveHalfPgDn = d
+HelpMoveHalfPgUp = u
+HelpMoveTop = home; ctrl-home; ctrl-pgup; a1; alt-lt; g
+HelpMoveBottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g
+HelpSelectLink = right; enter
+HelpNextLink = tab
+HelpPrevLink = alt-tab
+HelpNextNode = n
+HelpPrevNode = p
+
 [editor]
 EditXStore = alt-w
 EditXPaste = ctrl-y
 EditXCut = ctrl-w
-
 EditDeleteLine = ctrl-y
 EditDeleteToLineEnd = ctrl-k
 EditDeleteToLineBegin =
-
 EditLeft = left; ctrl-b
 EditRight = right; ctrl-f
 EditUp = up; ctrl-p
@@ -45,10 +237,8 @@ EditUnmark =
 EditFind = f7; ctrl-s
 EditMarkLine =
 EditMarkWord =
-
 EditShiftBlockLeft =
 EditShiftBlockRight =
-
 EditPageUpHighlight = shift-pgup
 EditPageDownHighlight = shift-pgdn
 EditLeftHighlight = shift-left
@@ -67,7 +257,6 @@ EditScrollUpHighlight = ctrl-shift-up
 EditScrollDownHighlight = ctrl-shift-down
 EditParagraphUpHighlight =
 EditParagraphDownHighlight =
-
 EditPageUpAltHighlight = alt-pgup
 EditPageDownAltHighlight = alt-pgdn
 EditLeftAltHighlight = alt-left
@@ -86,7 +275,6 @@ EditScrollUpAltHighlight =
 EditScrollDownAltHighlight =
 EditParagraphUpAltHighlight =
 EditParagraphDownAltHighlight =
-
 EditSaveBlock =
 EditColumnMark = f13
 EditFindAgain = f17
@@ -115,7 +303,6 @@ EditSort = alt-t
 EditMail =
 EditCancel =
 EditComplete =
-
 EditParagraphFormat = alt-p
 EditUtil =
 EditTypeLoadPython =
@@ -138,34 +325,26 @@ EditToggleBookmark =
 EditFlushBookmarks =
 EditNextBookmark =
 EditPrevBookmark =
-
 EditSelectionHistory =
 EditShell = ctrl-o
 EditInsertLiteral = ctrl-q
-
 EditBeginRecordMacro =
 EditEndRecordMacro =
 EditBeginOrEndMacro = ctrl-r
 EditDeleteMacro =
-
 EditToggleLineState = alt-n
 EditToggleTabTWS = alt-underline
 EditToggleSyntax = ctrl-s
 EditToggleShowMargin =
-
 EditFindDefinition = alt-enter
 EditLoadPrevFile = alt-minus
 EditLoadNextFile = alt-plus
-
 EditBeginEndRepeat =
-
 SelectCodepage = alt-e
-
 EditExtMode = ctrl-x
 
-[edit:xmap]
+[editor:xmap]
 EditNew = k
-EditExecuteMacro = e
 
 [viewer]
 ViewHelp = f1
@@ -221,201 +400,6 @@ ViewMovePgUp = pgup; alt-v
 ViewMoveTop = home; ctrl-home; ctrl-pgup; a1; alt-lt; g
 ViewMoveBottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g
 
-[main]
-CmdHelp = f1
-CmdUserMenu = f2
-CmdView = f3
-CmdViewFile = f13
-CmdEdit = f4
-CmdEditForceInternal =
-CmdCopy = f5
-CmdRename = f6
-CmdMkdir = f7
-CmdDelete = f8
-CmdMenu = f9
-CmdQuit = f10
-CmdMenuLastSelected = f19
-CmdQuietQuit = f20
-CmdFind = alt-question
-CmdQuickCd = alt-c
-CmdQuickChdir = ctrl-backslash
-CmdReread = ctrl-r
-CmdSingleDirsize = ctrl-space
-CmdSuspend = ctrl-z
-CmdSwapPanel = ctrl-u
-CmdHistory = alt-h
-CmdListing =
-CmdToggleListing = alt-t
-CmdToggleShowHidden = alt-dot
-CmdTogglePanelsSplit = alt-comma
-ShowCommandLine = ctrl-o
-CmdCopyCurrentPathname = alt-a
-CmdCopyOtherPathname = alt-shift-a
-CmdFilteredView = alt-exclamation
-CmdSelect = kpplus
-CmdUnselect = kpminus
-CmdReverseSelection = kpasterisk
-CmdDialogList = alt-prime
-ExtMap1 = ctrl-x
-
-[main:xmap]
-CmdChmod = c
-CmdChown = o
-CmdCompareDirs = d
-CmdEditSymlink = ctrl-s
-CmdLink = l
-CmdSymlink = s
-CmdRelativeSymlink = v
-CmdInfo = i
-CmdQuickView = q
-CmdExternalPanelize = exclamation
-CmdReselectVfs = a
-CmdJobs = j
-CmdCopyCurrentPathname = p
-CmdCopyOtherPathname = ctrl-p
-CmdCopyCurrentTagged = t
-CmdCopyOtherTagged = ctrl-t
-CmdDiffView = ctrl-d
-
-[panel]
-PanelStartSearch = ctrl-s; alt-s
-PanelMarkFile = insert; ctrl-t
-PanelMarkFileUp = shift-up
-PanelMarkFileDown = shift-down
-PanelMoveDown = down; ctrl-n
-PanelMoveUp = up; ctrl-p
-PanelMoveLeft = left
-PanelMoveRight = right
-PanelPrevPage = pgup; alt-v
-PanelNextPage = pgdn; ctrl-v
-PanelDoEnter = enter
-PanelChdirOtherPanel = alt-o
-PanelChdirToReadlink = alt-l
-PanelViewSimple = F13
-PanelEditNew = F14
-PanelCopyLocal = F15
-PanelRenameLocal = F16
-PanelDeleteLocal = F18
-PanelReverseSelection = alt-asterisk
-PanelSelect = alt-plus
-PanelUnselect = alt-minus
-PanelGotoChildDir = ctrl-pgdn
-PanelGotoParentDir = ctrl-pgup
-PanelDirectoryHistoryList = alt-shift-h
-PanelDirectoryHistoryNext = alt-u
-PanelDirectoryHistoryPrev = alt-y
-PanelGotoBottomFile = alt-j
-PanelGotoMiddleFile = alt-r
-PanelSyncOtherPanel = alt-i
-PanelGotoTopFile = alt-g
-PanelSetPanelEncoding = alt-e
-PanelMoveHome = alt-lt; home; a1
-PanelMoveEnd = alt-gt; end; c1
-PanelSelectSortOrder=
-PanelToggleSortOrderPrev=
-PanelToggleSortOrderNext=
-PanelReverseSort=
-PanelSortOrderByName=
-PanelSortOrderByExt=
-PanelSortOrderBySize=
-PanelSortOrderByMTime=
-PanelSmartGotoParentDir=
-
-[input]
-InputBol = ctrl-a; alt-lt; home; a1
-InputEol = ctrl-e; alt-gt; end; c1
-InputMoveLeft = left; alt-left
-InputWordLeft = ctrl-left
-InputBackwardChar = ctrl-b
-InputBackwardWord = alt-b
-InputMoveRight = right; alt-right
-InputWordRight = ctrl-right
-InputForwardChar = ctrl-f
-InputForwardWord = alt-f
-InputBackwardDelete = backspace
-InputDeleteChar = delete
-InputKillWord = alt-d
-InputBackwardKillWord = alt-backspace
-InputSetMark =
-InputKillRegion = ctrl-w
-InputXCut =
-InputXStore = alt-w
-InputXPaste =
-InputYank = ctrl-y
-InputKillLine = ctrl-k
-InputHistoryPrev = alt-p; ctrl-down
-InputHistoryNext = alt-n; ctrl-up
-InputHistoryShow = alt-h
-InputComplete = alt-tab
-InputClearLine =
-InputLeftHighlight =
-InputRightHighlight =
-InputWordLeftHighlight =
-InputWordRightHighlight =
-InputBolHighlight =
-InputEolHighlight =
-
-[listbox]
-ListboxMoveUp = up; ctrl-p
-ListboxMoveDown = down; ctrl-n
-ListboxMoveHome = home; alt-lt; a1
-ListboxMoveEnd = end; alt-gt; c1
-ListboxMovePgUp = pgup; alt-v
-ListboxMovePgDn = pgdn; ctrl-v
-ListboxDeleteItem = delete; d
-ListboxDeleteAll = shift-delete; shift-d
-
-[tree]
-TreeHelp = f1
-TreeForget = f3
-TreeToggleNav = f4
-TreeCopy = f5
-TreeMove = f6
-TreeMoveUp = up; ctrl-p
-TreeMoveDown = down; ctrl-n
-TreeMoveLeft = left
-TreeMoveRight = right
-TreeMoveHome = home; alt-lt; a1
-TreeMoveEnd = end; alt-gt; c1
-TreeMovePgUp = pgup; alt-v
-TreeMovePgDn = pgdn; ctrl-v
-TreeOpen = enter
-TreeRescan = f2; ctrl-r
-TreeStartSearch = ctrl-s; alt-s
-TreeRemove = f8; delete
-
-[help]
-HelpHelp = f1
-HelpIndex = f2; c
-HelpBack = f3; left; l
-HelpQuit = f10; esc; ctrl-g
-HelpMoveUp = up; ctrl-p
-HelpMoveDown = down; ctrl-n
-HelpMovePgDn = f; space; pgdn; ctrl-v
-HelpMovePgUp = b; pgup; alt-v; backspace
-HelpMoveHalfPgDn = d
-HelpMoveHalfPgUp = u
-HelpMoveTop = home; ctrl-home; ctrl-pgup; a1; alt-lt; g
-HelpMoveBottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g
-HelpSelectLink = right; enter
-HelpNextLink = tab
-HelpPrevLink = alt-tab
-HelpNextNode = n
-HelpPrevNode = p
-
-[dialog]
-DialogOK = enter
-DialogCancel = f10; esc; ctrl-g
-DialogPrevItem = left; up
-DialogNextItem = right; down
-DialogHelp = f1
-DialogSuspend = ctrl-z
-DialogRefresh = ctrl-l
-CmdDialogList = alt-prime
-CmdDialogNext = alt-rbrace
-CmdDialogPrev = alt-lbrace
-
-
 [diffviewer]
 DiffDisplaySymbols = alt-s; s
 DiffDisplayNumbers = alt-n; l

+ 420 - 421
src/keybind-defaults.c

@@ -31,199 +31,333 @@
 
 /*** global variables ****************************************************************************/
 
-#ifdef USE_INTERNAL_EDIT
-GArray *editor_keymap = NULL;
-GArray *editor_x_keymap = NULL;
-
-const global_keymap_t *editor_map;
-const global_keymap_t *editor_x_map;
-#endif
-
 GArray *main_keymap = NULL;
 GArray *main_x_keymap = NULL;
-GArray *viewer_keymap = NULL;
-GArray *viewer_hex_keymap = NULL;
 GArray *panel_keymap = NULL;
+GArray *dialog_keymap = NULL;
 GArray *input_keymap = NULL;
 GArray *listbox_keymap = NULL;
 GArray *tree_keymap = NULL;
 GArray *help_keymap = NULL;
-GArray *dialog_keymap = NULL;
-
+#ifdef USE_INTERNAL_EDIT
+GArray *editor_keymap = NULL;
+GArray *editor_x_keymap = NULL;
+#endif
+GArray *viewer_keymap = NULL;
+GArray *viewer_hex_keymap = NULL;
 #ifdef USE_DIFF_VIEW
 GArray *diff_keymap = NULL;
-
-const global_keymap_t *diff_map;
 #endif
 
 const global_keymap_t *main_map;
 const global_keymap_t *main_x_map;
 const global_keymap_t *panel_map;
+const global_keymap_t *dialog_map;
 const global_keymap_t *input_map;
 const global_keymap_t *listbox_map;
 const global_keymap_t *tree_map;
 const global_keymap_t *help_map;
-const global_keymap_t *dialog_map;
+#ifdef USE_INTERNAL_EDIT
+const global_keymap_t *editor_map;
+const global_keymap_t *editor_x_map;
+#endif
+#ifdef USE_DIFF_VIEW
+const global_keymap_t *diff_map;
+#endif
 
 /*** global variables ****************************************************************************/
 
-/* viewer/actions_cmd.c */
-const global_keymap_t default_viewer_keymap[] = {
-    {KEY_F (1), CK_ViewHelp, "F1"},
-    {KEY_F (2), CK_ViewToggleWrapMode, "F2"},
-    {KEY_F (3), CK_ViewQuit, "F3"},
-    {KEY_F (4), CK_ViewToggleHexMode, "F4"},
-    {KEY_F (5), CK_ViewGoto, "F5"},
-    {KEY_F (7), CK_ViewSearch, "F7"},
-    {KEY_F (8), CK_ViewToggleMagicMode, "F8"},
-    {KEY_F (9), CK_ViewToggleNroffMode, "F9"},
-    {KEY_F (10), CK_ViewQuit, "F10"},
+/* midnight */
+const global_keymap_t default_main_map[] = {
+    {KEY_F (1), CK_HelpCmd, "F1"},
+    {KEY_F (2), CK_UserMenuCmd, "F2"},
+    {KEY_F (3), CK_ViewCmd, "F3"},
+    {KEY_F (4), CK_EditCmd, "F4"},
+    {KEY_F (5), CK_CopyCmd, "F5"},
+    {KEY_F (6), CK_RenameCmd, "F6"},
+    {KEY_F (7), CK_MkdirCmd, "F7"},
+    {KEY_F (8), CK_DeleteCmd, "F8"},
+    {KEY_F (9), CK_MenuCmd, "F9"},
+    {KEY_F (10), CK_QuitCmd, "F10"},
+    {KEY_F (13), CK_ViewFileCmd, "S-F3"},
+    {KEY_F (19), CK_MenuLastSelectedCmd, "S-F9"},
+    {KEY_F (20), CK_QuietQuitCmd, "S-10"},
+    {ALT ('h'), CK_HistoryCmd, "M-h"},
+    {XCTRL ('@'), CK_SingleDirsizeCmd, "C-Space"},
+    /* Copy useful information to the command line */
+    {ALT ('a'), CK_CopyCurrentPathname, "M-a"},
+    {ALT ('A'), CK_CopyOtherPathname, "M-A"},
+    {ALT ('c'), CK_QuickCdCmd, "M-c"},
+    /* To access the directory hotlist */
+    {XCTRL ('\\'), CK_QuickChdirCmd, "C-\\"},
+    /* Suspend */
+    {XCTRL ('z'), CK_SuspendCmd, "C-z"},
+    /* The filtered view command */
+    {ALT ('!'), CK_FilteredViewCmd, "M-!"},
+    /* Find file */
+    {ALT ('?'), CK_FindCmd, "M-?"},
+    /* Panel refresh */
+    {XCTRL ('r'), CK_RereadCmd, "C-r"},
+    /* Toggle listing between long, user defined and full formats */
+    {ALT ('t'), CK_ToggleListingCmd, "M-t"},
+    /* Swap panels */
+    {XCTRL ('u'), CK_SwapCmd, "C-u"},
+    /* View output */
+    {XCTRL ('o'), CK_ShowCommandLine, "C-o"},
+    {ALT ('.'), CK_ToggleShowHidden, "M-."},
+    {ALT (','), CK_TogglePanelsSplit, "M-,"},
+    {XCTRL ('x'), CK_StartExtMap1, "C-x"},
+    /* Select/unselect group */
+    {KEY_KP_ADD, CK_SelectCmd, "+"},
+    {KEY_KP_SUBTRACT, CK_UnselectCmd, "-"},
+    {ALT ('*'), CK_ReverseSelectionCmd, "*"},
 
-    {'?', CK_ViewSearch, "?"},
-    {'/', CK_ViewSearch, "/"},
-    {XCTRL ('r'), CK_ViewContinueSearch, "C-r"},
-    {XCTRL ('s'), CK_ViewContinueSearch, "C-s"},
-    {KEY_F (17), CK_ViewContinueSearch, "S-F7"},
-    {'n', CK_ViewContinueSearch, "n"},
-    {ALT ('r'), CK_ViewToggleRuler, "M-r"},
+    {ALT ('`'), CK_DialogListCmd, "M-`"},
+    {ALT ('}'), CK_DialogNextCmd, "M-}"},
+    {ALT ('{'), CK_DialogPrevCmd, "M-{"},
 
-    {XCTRL ('a'), CK_ViewMoveToBol, "C-a"},
-    {XCTRL ('e'), CK_ViewMoveToEol, "C-e"},
+    {0, CK_Ignore_Key, ""}
+};
 
-    {'h', CK_ViewMoveLeft, "h"},
-    {KEY_LEFT, CK_ViewMoveLeft, "Left"},
+const global_keymap_t default_main_x_map[] = {
+    {'d', CK_CompareDirsCmd, "d"},
+#ifdef USE_DIFF_VIEW
+    {XCTRL ('d'), CK_DiffViewCmd, "C-d"},
+#endif /* USE_DIFF_VIEW */
+#ifdef ENABLE_VFS
+    {'a', CK_ReselectVfs, "a"},
+#endif /* ENABLE_VFS */
+    {'p', CK_CopyCurrentPathname, "p"},
+    {XCTRL ('p'), CK_CopyOtherPathname, "C-p"},
+    {'t', CK_CopyCurrentTagged, "t"},
+    {XCTRL ('t'), CK_CopyOtherTagged, "C-t"},
+    {'c', CK_ChmodCmd, "c"},
+    {'o', CK_ChownCmd, "o"},
+    {'r', CK_CopyCurrentReadlink, "r"},
+    {XCTRL ('r'), CK_CopyOtherReadlink, "C-r"},
+    {'l', CK_LinkCmd, "l"},
+    {'s', CK_SymlinkCmd, "s"},
+    {'v', CK_RelativeSymlinkCmd, "v"},
+    {XCTRL ('s'), CK_EditSymlinkCmd, "C-s"},
+    {'i', CK_InfoCmd, "i"},
+    {'q', CK_QuickViewCmd, "q"},
+    {'h', CK_AddHotlist, "h"},
+    {'!', CK_ExternalPanelize, "!"},
+#ifdef WITH_BACKGROUND
+    {'j', CK_JobsCmd, "j"},
+#endif /* WITH_BACKGROUND */
+    {0, CK_Ignore_Key, ""}
+};
 
-    {'l', CK_ViewMoveRight, "l"},
-    {KEY_RIGHT, CK_ViewMoveRight, "Right"},
+/* panel */
+const global_keymap_t default_panel_keymap[] = {
+    {ALT ('o'), CK_PanelChdirOtherPanel, "M-o"},
+    {ALT ('l'), CK_PanelChdirToReadlink, "M-l"},
+    {KEY_F (15), CK_PanelCmdCopyLocal, "S-F5"},
+    {KEY_F (18), CK_PanelCmdDeleteLocal, "S-F8"},
+    {KEY_ENTER, CK_PanelCmdDoEnter, "Enter"},
+    {'\n', CK_PanelCmdDoEnter, "Enter"},
+    {KEY_F (14), CK_PanelCmdEditNew, "S-F4"},
+    {KEY_F (16), CK_PanelCmdRenameLocal, "S-F6"},
+    {ALT ('*'), CK_PanelCmdReverseSelection, "M-*"},
+    {KEY_KP_ADD, CK_PanelCmdSelect, "M-+"},
+    {KEY_KP_SUBTRACT, CK_PanelCmdUnselect, "M--"},
+    {KEY_F (13), CK_PanelCmdViewSimple, "S-F3"},
+    {KEY_M_CTRL | KEY_NPAGE, CK_PanelGotoChildDir, "C-PgDn"},
+    {KEY_M_CTRL | KEY_PPAGE, CK_PanelGotoParentDir, "C-PgUp"},
+    {ALT ('H'), CK_PanelDirectoryHistoryList, "M-H"},
+    {ALT ('u'), CK_PanelDirectoryHistoryNext, "M-u"},
+    {ALT ('y'), CK_PanelDirectoryHistoryPrev, "M-y"},
+    {ALT ('j'), CK_PanelGotoBottomFile, "M-j"},
+    {ALT ('r'), CK_PanelGotoMiddleFile, "M-r"},
+    {ALT ('g'), CK_PanelGotoTopFile, "M-g"},
+    {KEY_IC, CK_PanelMarkFile, "Insert"},
+    {KEY_UP, CK_PanelMoveUp, "Up"},
+    {KEY_DOWN, CK_PanelMoveDown, "Down"},
+    {KEY_LEFT, CK_PanelMoveLeft, "Left"},
+    {KEY_RIGHT, CK_PanelMoveRight, "Right"},
+    {KEY_END, CK_PanelMoveEnd, "End"},
+    {KEY_C1, CK_PanelMoveEnd, "C1"},
+    {KEY_HOME, CK_PanelMoveHome, "Home"},
+    {KEY_A1, CK_PanelMoveHome, "A1"},
+    {KEY_NPAGE, CK_PanelNextPage, "PgDn"},
+    {KEY_PPAGE, CK_PanelPrevPage, "PgUp"},
+    {ALT ('e'), CK_PanelSetPanelEncoding, "M-e"},
+    {XCTRL ('s'), CK_PanelStartSearch, "C-s"},
+    {ALT ('s'), CK_PanelStartSearch, "M-s"},
+    {ALT ('i'), CK_PanelSyncOtherPanel, "M-i"},
+    {0, CK_Ignore_Key, ""}
+};
 
-    {KEY_M_CTRL | KEY_LEFT, CK_ViewMoveLeft10, "C-Left"},
-    {KEY_M_CTRL | KEY_RIGHT, CK_ViewMoveRight10, "C-Right"},
+/* dialog */
+const global_keymap_t default_dialog_keymap[] = {
+    {'\n', CK_DialogOK, "Enter"},
+    {KEY_ENTER, CK_DialogOK, "Enter"},
+    {ESC_CHAR, CK_DialogCancel, "Esc"},
+    {XCTRL ('g'), CK_DialogCancel, "C-g"},
+    {KEY_F (10), CK_DialogCancel, "F10"},
+    {KEY_LEFT, CK_DialogPrevItem, "Left"},
+    {KEY_UP, CK_DialogPrevItem, "Up"},
+    {KEY_RIGHT, CK_DialogNextItem, "Right"},
+    {KEY_DOWN, CK_DialogNextItem, "Down"},
+    {KEY_F (1), CK_DialogHelp, "F1"},
+    {XCTRL ('z'), CK_DialogSuspend, "C-z"},
+    {XCTRL ('l'), CK_DialogRefresh, "C-l"},
+    {0, CK_Ignore_Key, ""}
+};
 
-    {'k', CK_ViewMoveUp, "k"},
-    {'y', CK_ViewMoveUp, "y"},
-    {XCTRL ('p'), CK_ViewMoveUp, "C-p"},
-    {KEY_IC, CK_ViewMoveUp, "Insert"},
-    {KEY_UP, CK_ViewMoveUp, "Up"},
+const global_keymap_t default_input_keymap[] = {
+    /* Motion */
+    {XCTRL ('a'), CK_InputBol, "C-a"},
+    {KEY_HOME, CK_InputBol, "Home"},
+    {KEY_A1, CK_InputBol, "A1"},
+    {ALT ('<'), CK_InputBol, "M-<"},
+    {XCTRL ('e'), CK_InputEol, "C-e"},
+    {KEY_END, CK_InputEol, "End"},
+    {ALT ('>'), CK_InputEol, "M->"},
+    {KEY_C1, CK_InputEol, "C1"},
+    {KEY_LEFT, CK_InputMoveLeft, "Left"},
+    {KEY_M_CTRL | KEY_LEFT, CK_InputWordLeft, "C-Left"},
+    {KEY_RIGHT, CK_InputMoveRight, "Right"},
+    {KEY_M_CTRL | KEY_RIGHT, CK_InputWordRight, "C-Right"},
 
-    {'j', CK_ViewMoveDown, "j"},
-    {'e', CK_ViewMoveDown, "e"},
-    {XCTRL ('n'), CK_ViewMoveUp, "C-n"},
-    {KEY_DOWN, CK_ViewMoveDown, "Down"},
-    {KEY_DC, CK_ViewMoveDown, "Delete"},
-    {'\n', CK_ViewMoveDown, "Endter"},
+    {XCTRL ('b'), CK_InputBackwardChar, "C-b"},
+    {ALT ('b'), CK_InputBackwardWord, "M-b"},
+    {XCTRL ('f'), CK_InputForwardChar, "C-f"},
+    {ALT ('f'), CK_InputForwardWord, "M-f"},
 
-    {' ', CK_ViewMovePgDn, "Space"},
-    {'f', CK_ViewMovePgDn, "f"},
-    {KEY_NPAGE, CK_ViewMovePgDn, "PgDn"},
-    {XCTRL ('v'), CK_ViewMovePgDn, "C-v"},
+    /* Editing */
+    {KEY_BACKSPACE, CK_InputBackwardDelete, "BackSpace"},
+    {KEY_BACKSPACE, CK_InputBackwardDelete, "C-h"},
+    {KEY_DC, CK_InputDeleteChar, "Delete"},
+    {KEY_DC, CK_InputDeleteChar, "C-d"},
+    {ALT ('d'), CK_InputKillWord, "M-d"},
+    {ALT (KEY_BACKSPACE), CK_InputBackwardKillWord, "M-BackSpace"},
 
-    {'b', CK_ViewMovePgUp, "b"},
-    {KEY_PPAGE, CK_ViewMovePgUp, "PgUp"},
-    {ALT ('v'), CK_ViewMovePgUp, "M-v"},
-    {KEY_BACKSPACE, CK_ViewMovePgUp, "BackSpace"},
+    /* Region manipulation */
+    {XCTRL ('w'), CK_InputKillRegion, "C-w"},
+    {ALT ('w'), CK_InputKillSave, "M-w"},
+    {XCTRL ('y'), CK_InputYank, "C-y"},
+    {XCTRL ('k'), CK_InputKillLine, "C-k"},
 
-    {'d', CK_ViewMoveHalfPgDn, "d"},
-    {'u', CK_ViewMoveHalfPgUp, "u"},
+    /* History */
+    {ALT ('p'), CK_InputHistoryPrev, "M-p"},
+    {ALT ('n'), CK_InputHistoryNext, "M-n"},
+    {ALT ('h'), CK_InputHistoryShow, "M-h"},
 
-    {KEY_HOME, CK_ViewMoveTop, "Home"},
-    {KEY_M_CTRL | KEY_HOME, CK_ViewMoveTop, "C-Home"},
-    {KEY_M_CTRL | KEY_PPAGE, CK_ViewMoveTop, "C-PgUp"},
-    {KEY_A1, CK_ViewMoveTop, "A1"},
-    {ALT ('<'), CK_ViewMoveTop, "M-<"},
-    {'g', CK_ViewMoveTop, "g"},
-
-    {KEY_END, CK_ViewMoveBottom, "End"},
-    {KEY_M_CTRL | KEY_END, CK_ViewMoveBottom, "C-End"},
-    {KEY_M_CTRL | KEY_NPAGE, CK_ViewMoveBottom, "C-PgDn"},
-    {KEY_C1, CK_ViewMoveBottom, "C1"},
-    {ALT ('>'), CK_ViewMoveBottom, "M->"},
-    {'G', CK_ViewMoveBottom, "G"},
-
-    {'m', CK_ViewGotoBookmark, "m"},
-    {'r', CK_ViewNewBookmark, "r"},
-
-    {XCTRL ('f'), CK_ViewNextFile, "C-f"},
-    {XCTRL ('b'), CK_ViewPrevFile, "C-b"},
-
-    {'q', CK_ViewQuit, "q"},
-    {XCTRL ('g'), CK_ViewQuit, "C-g"},
-    {ESC_CHAR, CK_ViewQuit, "Esc"},
-
-    {ALT ('e'), CK_SelectCodepage, "M-e"},
-    {XCTRL ('o'), CK_ShowCommandLine, "C-o"},
+    /* Completion */
+    {ALT ('\t'), CK_InputComplete, "M-tab"},
 
     {0, CK_Ignore_Key, ""}
 };
 
-const global_keymap_t default_viewer_hex_keymap[] = {
-    {KEY_F (1), CK_ViewHelp, "F1"},
-    {KEY_F (2), CK_ViewToggleHexEditMode, "F2"},
-    {KEY_F (3), CK_ViewQuit, "F3"},
-    {KEY_F (4), CK_ViewToggleHexMode, "F4"},
-    {KEY_F (5), CK_ViewGoto, "F5"},
-    {KEY_F (6), CK_ViewHexEditSave, "F6"},
-    {KEY_F (7), CK_ViewSearch, "F7"},
-    {KEY_F (8), CK_ViewToggleMagicMode, "F8"},
-    {KEY_F (9), CK_ViewToggleNroffMode, "F9"},
-    {KEY_F (10), CK_ViewQuit, "F10"},
-
-    {'?', CK_ViewSearch, "?"},
-    {'/', CK_ViewSearch, "/"},
-    {XCTRL ('r'), CK_ViewContinueSearch, "C-r"},
-    {XCTRL ('s'), CK_ViewContinueSearch, "C-s"},
-    {KEY_F (17), CK_ViewContinueSearch, "S-F7"},
-    {'n', CK_ViewContinueSearch, "n"},
-
-    {'\t', CK_ViewToggleHexNavMode, "Tab"},
-    {XCTRL ('a'), CK_ViewMoveToBol, "C-a"},
-    {XCTRL ('e'), CK_ViewMoveToEol, "C-e"},
-
-    {'b', CK_ViewMoveLeft, "b"},
-    {KEY_LEFT, CK_ViewMoveLeft, "Left"},
-
-    {'f', CK_ViewMoveRight, "f"},
-    {KEY_RIGHT, CK_ViewMoveRight, "Right"},
-
-    {'k', CK_ViewMoveUp, "k"},
-    {'y', CK_ViewMoveUp, "y"},
-    {KEY_UP, CK_ViewMoveUp, "Up"},
-
-    {'j', CK_ViewMoveDown, "j"},
-    {KEY_DOWN, CK_ViewMoveDown, "Down"},
-    {KEY_DC, CK_ViewMoveDown, "Delete"},
-
-    {KEY_NPAGE, CK_ViewMovePgDn, "PgDn"},
-    {XCTRL ('v'), CK_ViewMovePgDn, "C-v"},
-
-    {KEY_PPAGE, CK_ViewMovePgUp, "PgUp"},
-    {ALT ('v'), CK_ViewMovePgUp, "M-v"},
-
-    {KEY_HOME, CK_ViewMoveTop, "Home"},
-    {KEY_M_CTRL | KEY_HOME, CK_ViewMoveTop, "C-Home"},
-    {KEY_M_CTRL | KEY_PPAGE, CK_ViewMoveTop, "C-PgUp"},
-    {KEY_A1, CK_ViewMoveTop, "A1"},
-    {ALT ('<'), CK_ViewMoveTop, "M-<"},
-    {'g', CK_ViewMoveTop, "g"},
-
-    {KEY_END, CK_ViewMoveBottom, "End"},
-    {KEY_M_CTRL | KEY_END, CK_ViewMoveBottom, "C-End"},
-    {KEY_M_CTRL | KEY_NPAGE, CK_ViewMoveBottom, "C-PgDn"},
-    {KEY_C1, CK_ViewMoveBottom, "C1"},
-    {ALT ('>'), CK_ViewMoveBottom, "M->"},
-    {'G', CK_ViewMoveBottom, "G"},
-
-    {'q', CK_ViewQuit, "q"},
-    {XCTRL ('g'), CK_ViewQuit, "C-g"},
-    {ESC_CHAR, CK_ViewQuit, "Esc"},
+const global_keymap_t default_listbox_keymap[] = {
+    {KEY_UP, CK_ListboxMoveUp, "Up"},
+    {XCTRL ('p'), CK_ListboxMoveUp, "C-p"},
+    {KEY_DOWN, CK_ListboxMoveDown, "Down"},
+    {XCTRL ('n'), CK_ListboxMoveDown, "C-n"},
+    {KEY_HOME, CK_ListboxMoveHome, "Home"},
+    {ALT ('<'), CK_ListboxMoveHome, "M-<"},
+    {KEY_A1, CK_ListboxMoveHome, "A1"},
+    {KEY_END, CK_ListboxMoveEnd, "End"},
+    {ALT ('>'), CK_ListboxMoveEnd, "M->"},
+    {KEY_C1, CK_ListboxMoveEnd, "C1"},
+    {KEY_PPAGE, CK_ListboxMovePgUp, "PgUp"},
+    {ALT ('v'), CK_ListboxMovePgUp, "M-v"},
+    {KEY_NPAGE, CK_ListboxMovePgDn, "PgDn"},
+    {XCTRL ('v'), CK_ListboxMovePgDn, "C-v"},
+    {KEY_DC, CK_ListboxDeleteItem, "Delete"},
+    {'d', CK_ListboxDeleteItem, "d"},
+    {KEY_M_SHIFT | KEY_DC, CK_ListboxDeleteAll, "S-Delete"},
+    {'D', CK_ListboxDeleteAll, "D"},
+    {0, CK_Ignore_Key, ""}
+};
 
-    {ALT ('e'), CK_SelectCodepage, "M-e"},
-    {XCTRL ('o'), CK_ShowCommandLine, "C-o"},
+/* tree */
+const global_keymap_t default_tree_keymap[] = {
+    {KEY_F (1), CK_TreeHelp, "F1"},
+    {KEY_F (2), CK_TreeRescan, "F2"},
+    {KEY_F (3), CK_TreeForget, "F3"},
+    {KEY_F (4), CK_TreeToggleNav, "F4"},
+    {KEY_F (5), CK_TreeCopy, "F5"},
+    {KEY_F (6), CK_TreeMove, "F6"},
+#if 0
+    {KEY_F (7), CK_TreeMake, "F7"},
+#endif
+    {KEY_F (8), CK_TreeRemove, "F8"},
+    {KEY_UP, CK_TreeMoveUp, "Up"},
+    {XCTRL ('p'), CK_TreeMoveUp, "C-p"},
+    {KEY_DOWN, CK_TreeMoveDown, "Down"},
+    {XCTRL ('n'), CK_TreeMoveDown, "C-n"},
+    {KEY_LEFT, CK_TreeMoveLeft, "Left"},
+    {KEY_RIGHT, CK_TreeMoveRight, "Right"},
+    {KEY_HOME, CK_TreeMoveHome, "Home"},
+    {ALT ('<'), CK_TreeMoveHome, "M-<"},
+    {KEY_A1, CK_TreeMoveHome, "A1"},
+    {KEY_END, CK_TreeMoveEnd, "End"},
+    {ALT ('>'), CK_TreeMoveEnd, "M->"},
+    {KEY_C1, CK_TreeMoveEnd, "C1"},
+    {KEY_PPAGE, CK_TreeMovePgUp, "PgUp"},
+    {ALT ('v'), CK_TreeMovePgUp, "M-v"},
+    {KEY_NPAGE, CK_TreeMovePgDn, "PnDn"},
+    {XCTRL ('v'), CK_TreeMovePgDn, "C-v"},
+    {'\n', CK_TreeOpen, "Enter"},
+    {KEY_ENTER, CK_TreeOpen, "Enter"},
+    {XCTRL ('r'), CK_TreeRescan, "C-r"},
+    {XCTRL ('s'), CK_TreeStartSearch, "C-s"},
+    {ALT ('s'), CK_TreeStartSearch, "M-s"},
+    {KEY_DC, CK_TreeRemove, "Delete"},
+    {0, CK_Ignore_Key, ""}
+};
 
+/* help */
+const global_keymap_t default_help_keymap[] = {
+    {KEY_F (1), CK_HelpHelp, "F1"},
+    {KEY_F (2), CK_HelpIndex, "F2"},
+    {KEY_F (3), CK_HelpBack, "F3"},
+    {KEY_F (10), CK_HelpQuit, "F10"},
+    {KEY_LEFT, CK_HelpBack, "Left"},
+    {'l', CK_HelpBack, "l"},
+    {KEY_DOWN, CK_HelpMoveDown, "Down"},
+    {XCTRL ('n'), CK_HelpMoveDown, "C-n"},
+    {KEY_UP, CK_HelpMoveUp, "Up"},
+    {XCTRL ('p'), CK_HelpMoveUp, "C-p"},
+    {KEY_NPAGE, CK_HelpMovePgDn, "PgDn"},
+    {XCTRL ('v'), CK_HelpMovePgDn, "C-v"},
+    {'f', CK_HelpMovePgDn, "f"},
+    {' ', CK_HelpMovePgDn, "Space"},
+    {KEY_PPAGE, CK_HelpMovePgUp, "PgUp"},
+    {ALT ('v'), CK_HelpMovePgUp, "M-v"},
+    {'b', CK_HelpMovePgUp, "b"},
+    {KEY_BACKSPACE, CK_HelpMovePgUp, "BackSpace"},
+    {'d', CK_HelpMoveHalfPgDn, "d"},
+    {'u', CK_HelpMoveHalfPgUp, "u"},
+    {KEY_HOME, CK_HelpMoveTop, "Home"},
+    {KEY_M_CTRL | KEY_HOME, CK_HelpMoveTop, "C-Home"},
+    {KEY_M_CTRL | KEY_PPAGE, CK_HelpMoveTop, "C-PgUp"},
+    {KEY_A1, CK_HelpMoveTop, "A1"},
+    {ALT ('<'), CK_HelpMoveTop, "M-<"},
+    {'g', CK_HelpMoveTop, "g"},
+    {KEY_END, CK_HelpMoveBottom, "End"},
+    {KEY_M_CTRL | KEY_END, CK_HelpMoveBottom, "C-End"},
+    {KEY_M_CTRL | KEY_NPAGE, CK_HelpMoveBottom, "C-PgDn"},
+    {KEY_C1, CK_HelpMoveBottom, "C1"},
+    {ALT ('>'), CK_HelpMoveBottom, "M->"},
+    {'G', CK_HelpMoveBottom, "G"},
+    {KEY_RIGHT, CK_HelpSelectLink, "Right"},
+    {KEY_ENTER, CK_HelpSelectLink, "Enter"},
+    {'\n', CK_HelpSelectLink, "Enter"},
+    {'\t', CK_HelpNextLink, "Tab"},
+    {ALT ('\t'), CK_HelpPrevLink, "M-Tab"},
+    {'n', CK_HelpNextNode, "n"},
+    {'p', CK_HelpPrevNode, "p"},
+    {ESC_CHAR, CK_HelpQuit, "Esc"},
+    {XCTRL ('g'), CK_HelpQuit, "C-g"},
     {0, CK_Ignore_Key, ""}
 };
 
 #ifdef USE_INTERNAL_EDIT
-/* ../edit/editkeys.c */
+/* editor/editkeys.c */
 const global_keymap_t default_editor_keymap[] = {
     {'\n', CK_Enter, "Enter"},
     {'\t', CK_Tab, "Tab"},
@@ -364,300 +498,165 @@ const global_keymap_t default_editor_x_keymap[] = {
 };
 #endif /* USE_INTERNAL_EDIT */
 
-/* dialog */
-const global_keymap_t default_dialog_keymap[] = {
-    {'\n', CK_DialogOK, "Enter"},
-    {KEY_ENTER, CK_DialogOK, "Enter"},
-    {ESC_CHAR, CK_DialogCancel, "Esc"},
-    {XCTRL ('g'), CK_DialogCancel, "C-g"},
-    {KEY_F (10), CK_DialogCancel, "F10"},
-    {KEY_LEFT, CK_DialogPrevItem, "Left"},
-    {KEY_UP, CK_DialogPrevItem, "Up"},
-    {KEY_RIGHT, CK_DialogNextItem, "Right"},
-    {KEY_DOWN, CK_DialogNextItem, "Down"},
-    {KEY_F (1), CK_DialogHelp, "F1"},
-    {XCTRL ('z'), CK_DialogSuspend, "C-z"},
-    {XCTRL ('l'), CK_DialogRefresh, "C-l"},
-    {0, CK_Ignore_Key, ""}
-};
+/* viewer/actions_cmd.c */
+const global_keymap_t default_viewer_keymap[] = {
+    {KEY_F (1), CK_ViewHelp, "F1"},
+    {KEY_F (2), CK_ViewToggleWrapMode, "F2"},
+    {KEY_F (3), CK_ViewQuit, "F3"},
+    {KEY_F (4), CK_ViewToggleHexMode, "F4"},
+    {KEY_F (5), CK_ViewGoto, "F5"},
+    {KEY_F (7), CK_ViewSearch, "F7"},
+    {KEY_F (8), CK_ViewToggleMagicMode, "F8"},
+    {KEY_F (9), CK_ViewToggleNroffMode, "F9"},
+    {KEY_F (10), CK_ViewQuit, "F10"},
 
-/* tree */
-const global_keymap_t default_tree_keymap[] = {
-    {KEY_F (1), CK_TreeHelp, "F1"},
-    {KEY_F (2), CK_TreeRescan, "F2"},
-    {KEY_F (3), CK_TreeForget, "F3"},
-    {KEY_F (4), CK_TreeToggleNav, "F4"},
-    {KEY_F (5), CK_TreeCopy, "F5"},
-    {KEY_F (6), CK_TreeMove, "F6"},
-#if 0
-    {KEY_F (7), CK_TreeMake, "F7"},
-#endif
-    {KEY_F (8), CK_TreeRemove, "F8"},
-    {KEY_UP, CK_TreeMoveUp, "Up"},
-    {XCTRL ('p'), CK_TreeMoveUp, "C-p"},
-    {KEY_DOWN, CK_TreeMoveDown, "Down"},
-    {XCTRL ('n'), CK_TreeMoveDown, "C-n"},
-    {KEY_LEFT, CK_TreeMoveLeft, "Left"},
-    {KEY_RIGHT, CK_TreeMoveRight, "Right"},
-    {KEY_HOME, CK_TreeMoveHome, "Home"},
-    {ALT ('<'), CK_TreeMoveHome, "M-<"},
-    {KEY_A1, CK_TreeMoveHome, "A1"},
-    {KEY_END, CK_TreeMoveEnd, "End"},
-    {ALT ('>'), CK_TreeMoveEnd, "M->"},
-    {KEY_C1, CK_TreeMoveEnd, "C1"},
-    {KEY_PPAGE, CK_TreeMovePgUp, "PgUp"},
-    {ALT ('v'), CK_TreeMovePgUp, "M-v"},
-    {KEY_NPAGE, CK_TreeMovePgDn, "PnDn"},
-    {XCTRL ('v'), CK_TreeMovePgDn, "C-v"},
-    {'\n', CK_TreeOpen, "Enter"},
-    {KEY_ENTER, CK_TreeOpen, "Enter"},
-    {XCTRL ('r'), CK_TreeRescan, "C-r"},
-    {XCTRL ('s'), CK_TreeStartSearch, "C-s"},
-    {ALT ('s'), CK_TreeStartSearch, "M-s"},
-    {KEY_DC, CK_TreeRemove, "Delete"},
-    {0, CK_Ignore_Key, ""}
-};
+    {'?', CK_ViewSearch, "?"},
+    {'/', CK_ViewSearch, "/"},
+    {XCTRL ('r'), CK_ViewContinueSearch, "C-r"},
+    {XCTRL ('s'), CK_ViewContinueSearch, "C-s"},
+    {KEY_F (17), CK_ViewContinueSearch, "S-F7"},
+    {'n', CK_ViewContinueSearch, "n"},
+    {ALT ('r'), CK_ViewToggleRuler, "M-r"},
 
-/* help */
-const global_keymap_t default_help_keymap[] = {
-    {KEY_F (1), CK_HelpHelp, "F1"},
-    {KEY_F (2), CK_HelpIndex, "F2"},
-    {KEY_F (3), CK_HelpBack, "F3"},
-    {KEY_F (10), CK_HelpQuit, "F10"},
-    {KEY_LEFT, CK_HelpBack, "Left"},
-    {'l', CK_HelpBack, "l"},
-    {KEY_DOWN, CK_HelpMoveDown, "Down"},
-    {XCTRL ('n'), CK_HelpMoveDown, "C-n"},
-    {KEY_UP, CK_HelpMoveUp, "Up"},
-    {XCTRL ('p'), CK_HelpMoveUp, "C-p"},
-    {KEY_NPAGE, CK_HelpMovePgDn, "PgDn"},
-    {XCTRL ('v'), CK_HelpMovePgDn, "C-v"},
-    {'f', CK_HelpMovePgDn, "f"},
-    {' ', CK_HelpMovePgDn, "Space"},
-    {KEY_PPAGE, CK_HelpMovePgUp, "PgUp"},
-    {ALT ('v'), CK_HelpMovePgUp, "M-v"},
-    {'b', CK_HelpMovePgUp, "b"},
-    {KEY_BACKSPACE, CK_HelpMovePgUp, "BackSpace"},
-    {'d', CK_HelpMoveHalfPgDn, "d"},
-    {'u', CK_HelpMoveHalfPgUp, "u"},
-    {KEY_HOME, CK_HelpMoveTop, "Home"},
-    {KEY_M_CTRL | KEY_HOME, CK_HelpMoveTop, "C-Home"},
-    {KEY_M_CTRL | KEY_PPAGE, CK_HelpMoveTop, "C-PgUp"},
-    {KEY_A1, CK_HelpMoveTop, "A1"},
-    {ALT ('<'), CK_HelpMoveTop, "M-<"},
-    {'g', CK_HelpMoveTop, "g"},
-    {KEY_END, CK_HelpMoveBottom, "End"},
-    {KEY_M_CTRL | KEY_END, CK_HelpMoveBottom, "C-End"},
-    {KEY_M_CTRL | KEY_NPAGE, CK_HelpMoveBottom, "C-PgDn"},
-    {KEY_C1, CK_HelpMoveBottom, "C1"},
-    {ALT ('>'), CK_HelpMoveBottom, "M->"},
-    {'G', CK_HelpMoveBottom, "G"},
-    {KEY_RIGHT, CK_HelpSelectLink, "Right"},
-    {KEY_ENTER, CK_HelpSelectLink, "Enter"},
-    {'\n', CK_HelpSelectLink, "Enter"},
-    {'\t', CK_HelpNextLink, "Tab"},
-    {ALT ('\t'), CK_HelpPrevLink, "M-Tab"},
-    {'n', CK_HelpNextNode, "n"},
-    {'p', CK_HelpPrevNode, "p"},
-    {ESC_CHAR, CK_HelpQuit, "Esc"},
-    {XCTRL ('g'), CK_HelpQuit, "C-g"},
-    {0, CK_Ignore_Key, ""}
-};
+    {XCTRL ('a'), CK_ViewMoveToBol, "C-a"},
+    {XCTRL ('e'), CK_ViewMoveToEol, "C-e"},
 
-/* panel */
-const global_keymap_t default_panel_keymap[] = {
-    {ALT ('o'), CK_PanelChdirOtherPanel, "M-o"},
-    {ALT ('l'), CK_PanelChdirToReadlink, "M-l"},
-    {KEY_F (15), CK_PanelCmdCopyLocal, "S-F5"},
-    {KEY_F (18), CK_PanelCmdDeleteLocal, "S-F8"},
-    {KEY_ENTER, CK_PanelCmdDoEnter, "Enter"},
-    {'\n', CK_PanelCmdDoEnter, "Enter"},
-    {KEY_F (14), CK_PanelCmdEditNew, "S-F4"},
-    {KEY_F (16), CK_PanelCmdRenameLocal, "S-F6"},
-    {ALT ('*'), CK_PanelCmdReverseSelection, "M-*"},
-    {KEY_KP_ADD, CK_PanelCmdSelect, "M-+"},
-    {KEY_KP_SUBTRACT, CK_PanelCmdUnselect, "M--"},
-    {KEY_F (13), CK_PanelCmdViewSimple, "S-F3"},
-    {KEY_M_CTRL | KEY_NPAGE, CK_PanelGotoChildDir, "C-PgDn"},
-    {KEY_M_CTRL | KEY_PPAGE, CK_PanelGotoParentDir, "C-PgUp"},
-    {ALT ('H'), CK_PanelDirectoryHistoryList, "M-H"},
-    {ALT ('u'), CK_PanelDirectoryHistoryNext, "M-u"},
-    {ALT ('y'), CK_PanelDirectoryHistoryPrev, "M-y"},
-    {ALT ('j'), CK_PanelGotoBottomFile, "M-j"},
-    {ALT ('r'), CK_PanelGotoMiddleFile, "M-r"},
-    {ALT ('g'), CK_PanelGotoTopFile, "M-g"},
-    {KEY_IC, CK_PanelMarkFile, "Insert"},
-    {KEY_UP, CK_PanelMoveUp, "Up"},
-    {KEY_DOWN, CK_PanelMoveDown, "Down"},
-    {KEY_LEFT, CK_PanelMoveLeft, "Left"},
-    {KEY_RIGHT, CK_PanelMoveRight, "Right"},
-    {KEY_END, CK_PanelMoveEnd, "End"},
-    {KEY_C1, CK_PanelMoveEnd, "C1"},
-    {KEY_HOME, CK_PanelMoveHome, "Home"},
-    {KEY_A1, CK_PanelMoveHome, "A1"},
-    {KEY_NPAGE, CK_PanelNextPage, "PgDn"},
-    {KEY_PPAGE, CK_PanelPrevPage, "PgUp"},
-    {ALT ('e'), CK_PanelSetPanelEncoding, "M-e"},
-    {XCTRL ('s'), CK_PanelStartSearch, "C-s"},
-    {ALT ('s'), CK_PanelStartSearch, "M-s"},
-    {ALT ('i'), CK_PanelSyncOtherPanel, "M-i"},
-    {0, CK_Ignore_Key, ""}
-};
+    {'h', CK_ViewMoveLeft, "h"},
+    {KEY_LEFT, CK_ViewMoveLeft, "Left"},
 
-/* main.c */
-const global_keymap_t default_main_map[] = {
-    {KEY_F (1), CK_HelpCmd, "F1"},
-    {KEY_F (2), CK_UserMenuCmd, "F2"},
-    {KEY_F (3), CK_ViewCmd, "F3"},
-    {KEY_F (4), CK_EditCmd, "F4"},
-    {KEY_F (5), CK_CopyCmd, "F5"},
-    {KEY_F (6), CK_RenameCmd, "F6"},
-    {KEY_F (7), CK_MkdirCmd, "F7"},
-    {KEY_F (8), CK_DeleteCmd, "F8"},
-    {KEY_F (9), CK_MenuCmd, "F9"},
-    {KEY_F (10), CK_QuitCmd, "F10"},
-    {KEY_F (13), CK_ViewFileCmd, "S-F3"},
-    {KEY_F (19), CK_MenuLastSelectedCmd, "S-F9"},
-    {KEY_F (20), CK_QuietQuitCmd, "S-10"},
-    {ALT ('h'), CK_HistoryCmd, "M-h"},
-    {XCTRL ('@'), CK_SingleDirsizeCmd, "C-Space"},
-    /* Copy useful information to the command line */
-    {ALT ('a'), CK_CopyCurrentPathname, "M-a"},
-    {ALT ('A'), CK_CopyOtherPathname, "M-A"},
-    {ALT ('c'), CK_QuickCdCmd, "M-c"},
-    /* To access the directory hotlist */
-    {XCTRL ('\\'), CK_QuickChdirCmd, "C-\\"},
-    /* Suspend */
-    {XCTRL ('z'), CK_SuspendCmd, "C-z"},
-    /* The filtered view command */
-    {ALT ('!'), CK_FilteredViewCmd, "M-!"},
-    /* Find file */
-    {ALT ('?'), CK_FindCmd, "M-?"},
-    /* Panel refresh */
-    {XCTRL ('r'), CK_RereadCmd, "C-r"},
-    /* Toggle listing between long, user defined and full formats */
-    {ALT ('t'), CK_ToggleListingCmd, "M-t"},
-    /* Swap panels */
-    {XCTRL ('u'), CK_SwapCmd, "C-u"},
-    /* View output */
-    {XCTRL ('o'), CK_ShowCommandLine, "C-o"},
-    {ALT ('.'), CK_ToggleShowHidden, "M-."},
-    {ALT (','), CK_TogglePanelsSplit, "M-,"},
-    {XCTRL ('x'), CK_StartExtMap1, "C-x"},
-    /* Select/unselect group */
-    {KEY_KP_ADD, CK_SelectCmd, "+"},
-    {KEY_KP_SUBTRACT, CK_UnselectCmd, "-"},
-    {ALT ('*'), CK_ReverseSelectionCmd, "*"},
+    {'l', CK_ViewMoveRight, "l"},
+    {KEY_RIGHT, CK_ViewMoveRight, "Right"},
 
-    {ALT ('`'), CK_DialogListCmd, "M-`"},
-    {ALT ('}'), CK_DialogNextCmd, "M-}"},
-    {ALT ('{'), CK_DialogPrevCmd, "M-{"},
+    {KEY_M_CTRL | KEY_LEFT, CK_ViewMoveLeft10, "C-Left"},
+    {KEY_M_CTRL | KEY_RIGHT, CK_ViewMoveRight10, "C-Right"},
 
-    {0, CK_Ignore_Key, ""}
-};
+    {'k', CK_ViewMoveUp, "k"},
+    {'y', CK_ViewMoveUp, "y"},
+    {XCTRL ('p'), CK_ViewMoveUp, "C-p"},
+    {KEY_IC, CK_ViewMoveUp, "Insert"},
+    {KEY_UP, CK_ViewMoveUp, "Up"},
 
-const global_keymap_t default_main_x_map[] = {
-    {'d', CK_CompareDirsCmd, "d"},
-#ifdef USE_DIFF_VIEW
-    {XCTRL ('d'), CK_DiffViewCmd, "C-d"},
-#endif /* USE_DIFF_VIEW */
-#ifdef ENABLE_VFS
-    {'a', CK_ReselectVfs, "a"},
-#endif /* ENABLE_VFS */
-    {'p', CK_CopyCurrentPathname, "p"},
-    {XCTRL ('p'), CK_CopyOtherPathname, "C-p"},
-    {'t', CK_CopyCurrentTagged, "t"},
-    {XCTRL ('t'), CK_CopyOtherTagged, "C-t"},
-    {'c', CK_ChmodCmd, "c"},
-    {'o', CK_ChownCmd, "o"},
-    {'r', CK_CopyCurrentReadlink, "r"},
-    {XCTRL ('r'), CK_CopyOtherReadlink, "C-r"},
-    {'l', CK_LinkCmd, "l"},
-    {'s', CK_SymlinkCmd, "s"},
-    {'v', CK_RelativeSymlinkCmd, "v"},
-    {XCTRL ('s'), CK_EditSymlinkCmd, "C-s"},
-    {'i', CK_InfoCmd, "i"},
-    {'q', CK_QuickViewCmd, "q"},
-    {'h', CK_AddHotlist, "h"},
-    {'!', CK_ExternalPanelize, "!"},
-#ifdef WITH_BACKGROUND
-    {'j', CK_JobsCmd, "j"},
-#endif /* WITH_BACKGROUND */
-    {0, CK_Ignore_Key, ""}
-};
+    {'j', CK_ViewMoveDown, "j"},
+    {'e', CK_ViewMoveDown, "e"},
+    {XCTRL ('n'), CK_ViewMoveUp, "C-n"},
+    {KEY_DOWN, CK_ViewMoveDown, "Down"},
+    {KEY_DC, CK_ViewMoveDown, "Delete"},
+    {'\n', CK_ViewMoveDown, "Endter"},
 
-const global_keymap_t default_input_keymap[] = {
-    /* Motion */
-    {XCTRL ('a'), CK_InputBol, "C-a"},
-    {KEY_HOME, CK_InputBol, "Home"},
-    {KEY_A1, CK_InputBol, "A1"},
-    {ALT ('<'), CK_InputBol, "M-<"},
-    {XCTRL ('e'), CK_InputEol, "C-e"},
-    {KEY_END, CK_InputEol, "End"},
-    {ALT ('>'), CK_InputEol, "M->"},
-    {KEY_C1, CK_InputEol, "C1"},
-    {KEY_LEFT, CK_InputMoveLeft, "Left"},
-    {KEY_M_CTRL | KEY_LEFT, CK_InputWordLeft, "C-Left"},
-    {KEY_RIGHT, CK_InputMoveRight, "Right"},
-    {KEY_M_CTRL | KEY_RIGHT, CK_InputWordRight, "C-Right"},
+    {' ', CK_ViewMovePgDn, "Space"},
+    {'f', CK_ViewMovePgDn, "f"},
+    {KEY_NPAGE, CK_ViewMovePgDn, "PgDn"},
+    {XCTRL ('v'), CK_ViewMovePgDn, "C-v"},
 
-    {XCTRL ('b'), CK_InputBackwardChar, "C-b"},
-    {ALT ('b'), CK_InputBackwardWord, "M-b"},
-    {XCTRL ('f'), CK_InputForwardChar, "C-f"},
-    {ALT ('f'), CK_InputForwardWord, "M-f"},
+    {'b', CK_ViewMovePgUp, "b"},
+    {KEY_PPAGE, CK_ViewMovePgUp, "PgUp"},
+    {ALT ('v'), CK_ViewMovePgUp, "M-v"},
+    {KEY_BACKSPACE, CK_ViewMovePgUp, "BackSpace"},
 
-    /* Editing */
-    {KEY_BACKSPACE, CK_InputBackwardDelete, "BackSpace"},
-    {KEY_BACKSPACE, CK_InputBackwardDelete, "C-h"},
-    {KEY_DC, CK_InputDeleteChar, "Delete"},
-    {KEY_DC, CK_InputDeleteChar, "C-d"},
-    {ALT ('d'), CK_InputKillWord, "M-d"},
-    {ALT (KEY_BACKSPACE), CK_InputBackwardKillWord, "M-BackSpace"},
+    {'d', CK_ViewMoveHalfPgDn, "d"},
+    {'u', CK_ViewMoveHalfPgUp, "u"},
 
-    /* Region manipulation */
-    {XCTRL ('w'), CK_InputKillRegion, "C-w"},
-    {ALT ('w'), CK_InputKillSave, "M-w"},
-    {XCTRL ('y'), CK_InputYank, "C-y"},
-    {XCTRL ('k'), CK_InputKillLine, "C-k"},
+    {KEY_HOME, CK_ViewMoveTop, "Home"},
+    {KEY_M_CTRL | KEY_HOME, CK_ViewMoveTop, "C-Home"},
+    {KEY_M_CTRL | KEY_PPAGE, CK_ViewMoveTop, "C-PgUp"},
+    {KEY_A1, CK_ViewMoveTop, "A1"},
+    {ALT ('<'), CK_ViewMoveTop, "M-<"},
+    {'g', CK_ViewMoveTop, "g"},
 
-    /* History */
-    {ALT ('p'), CK_InputHistoryPrev, "M-p"},
-    {ALT ('n'), CK_InputHistoryNext, "M-n"},
-    {ALT ('h'), CK_InputHistoryShow, "M-h"},
+    {KEY_END, CK_ViewMoveBottom, "End"},
+    {KEY_M_CTRL | KEY_END, CK_ViewMoveBottom, "C-End"},
+    {KEY_M_CTRL | KEY_NPAGE, CK_ViewMoveBottom, "C-PgDn"},
+    {KEY_C1, CK_ViewMoveBottom, "C1"},
+    {ALT ('>'), CK_ViewMoveBottom, "M->"},
+    {'G', CK_ViewMoveBottom, "G"},
 
-    /* Completion */
-    {ALT ('\t'), CK_InputComplete, "M-tab"},
+    {'m', CK_ViewGotoBookmark, "m"},
+    {'r', CK_ViewNewBookmark, "r"},
+
+    {XCTRL ('f'), CK_ViewNextFile, "C-f"},
+    {XCTRL ('b'), CK_ViewPrevFile, "C-b"},
+
+    {'q', CK_ViewQuit, "q"},
+    {XCTRL ('g'), CK_ViewQuit, "C-g"},
+    {ESC_CHAR, CK_ViewQuit, "Esc"},
+
+    {ALT ('e'), CK_SelectCodepage, "M-e"},
+    {XCTRL ('o'), CK_ShowCommandLine, "C-o"},
 
     {0, CK_Ignore_Key, ""}
 };
 
-const global_keymap_t default_listbox_keymap[] = {
-    {KEY_UP, CK_ListboxMoveUp, "Up"},
-    {XCTRL ('p'), CK_ListboxMoveUp, "C-p"},
-    {KEY_DOWN, CK_ListboxMoveDown, "Down"},
-    {XCTRL ('n'), CK_ListboxMoveDown, "C-n"},
-    {KEY_HOME, CK_ListboxMoveHome, "Home"},
-    {ALT ('<'), CK_ListboxMoveHome, "M-<"},
-    {KEY_A1, CK_ListboxMoveHome, "A1"},
-    {KEY_END, CK_ListboxMoveEnd, "End"},
-    {ALT ('>'), CK_ListboxMoveEnd, "M->"},
-    {KEY_C1, CK_ListboxMoveEnd, "C1"},
-    {KEY_PPAGE, CK_ListboxMovePgUp, "PgUp"},
-    {ALT ('v'), CK_ListboxMovePgUp, "M-v"},
-    {KEY_NPAGE, CK_ListboxMovePgDn, "PgDn"},
-    {XCTRL ('v'), CK_ListboxMovePgDn, "C-v"},
-    {KEY_DC, CK_ListboxDeleteItem, "Delete"},
-    {'d', CK_ListboxDeleteItem, "d"},
-    {KEY_M_SHIFT | KEY_DC, CK_ListboxDeleteAll, "S-Delete"},
-    {'D', CK_ListboxDeleteAll, "D"},
+const global_keymap_t default_viewer_hex_keymap[] = {
+    {KEY_F (1), CK_ViewHelp, "F1"},
+    {KEY_F (2), CK_ViewToggleHexEditMode, "F2"},
+    {KEY_F (3), CK_ViewQuit, "F3"},
+    {KEY_F (4), CK_ViewToggleHexMode, "F4"},
+    {KEY_F (5), CK_ViewGoto, "F5"},
+    {KEY_F (6), CK_ViewHexEditSave, "F6"},
+    {KEY_F (7), CK_ViewSearch, "F7"},
+    {KEY_F (8), CK_ViewToggleMagicMode, "F8"},
+    {KEY_F (9), CK_ViewToggleNroffMode, "F9"},
+    {KEY_F (10), CK_ViewQuit, "F10"},
+
+    {'?', CK_ViewSearch, "?"},
+    {'/', CK_ViewSearch, "/"},
+    {XCTRL ('r'), CK_ViewContinueSearch, "C-r"},
+    {XCTRL ('s'), CK_ViewContinueSearch, "C-s"},
+    {KEY_F (17), CK_ViewContinueSearch, "S-F7"},
+    {'n', CK_ViewContinueSearch, "n"},
+
+    {'\t', CK_ViewToggleHexNavMode, "Tab"},
+    {XCTRL ('a'), CK_ViewMoveToBol, "C-a"},
+    {XCTRL ('e'), CK_ViewMoveToEol, "C-e"},
+
+    {'b', CK_ViewMoveLeft, "b"},
+    {KEY_LEFT, CK_ViewMoveLeft, "Left"},
+
+    {'f', CK_ViewMoveRight, "f"},
+    {KEY_RIGHT, CK_ViewMoveRight, "Right"},
+
+    {'k', CK_ViewMoveUp, "k"},
+    {'y', CK_ViewMoveUp, "y"},
+    {KEY_UP, CK_ViewMoveUp, "Up"},
+
+    {'j', CK_ViewMoveDown, "j"},
+    {KEY_DOWN, CK_ViewMoveDown, "Down"},
+    {KEY_DC, CK_ViewMoveDown, "Delete"},
+
+    {KEY_NPAGE, CK_ViewMovePgDn, "PgDn"},
+    {XCTRL ('v'), CK_ViewMovePgDn, "C-v"},
+
+    {KEY_PPAGE, CK_ViewMovePgUp, "PgUp"},
+    {ALT ('v'), CK_ViewMovePgUp, "M-v"},
+
+    {KEY_HOME, CK_ViewMoveTop, "Home"},
+    {KEY_M_CTRL | KEY_HOME, CK_ViewMoveTop, "C-Home"},
+    {KEY_M_CTRL | KEY_PPAGE, CK_ViewMoveTop, "C-PgUp"},
+    {KEY_A1, CK_ViewMoveTop, "A1"},
+    {ALT ('<'), CK_ViewMoveTop, "M-<"},
+    {'g', CK_ViewMoveTop, "g"},
+
+    {KEY_END, CK_ViewMoveBottom, "End"},
+    {KEY_M_CTRL | KEY_END, CK_ViewMoveBottom, "C-End"},
+    {KEY_M_CTRL | KEY_NPAGE, CK_ViewMoveBottom, "C-PgDn"},
+    {KEY_C1, CK_ViewMoveBottom, "C1"},
+    {ALT ('>'), CK_ViewMoveBottom, "M->"},
+    {'G', CK_ViewMoveBottom, "G"},
+
+    {'q', CK_ViewQuit, "q"},
+    {XCTRL ('g'), CK_ViewQuit, "C-g"},
+    {ESC_CHAR, CK_ViewQuit, "Esc"},
+
+    {ALT ('e'), CK_SelectCodepage, "M-e"},
+    {XCTRL ('o'), CK_ShowCommandLine, "C-o"},
 
     {0, CK_Ignore_Key, ""}
 };
 
+
 #ifdef  USE_DIFF_VIEW
 /* diff viewer */
 const global_keymap_t default_diff_keymap[] = {
-
     {'s', CK_DiffDisplaySymbols, "s"},
     {'l', CK_DiffDisplayNumbers, "l"},
     {'f', CK_DiffFull, "f"},

+ 26 - 32
src/keybind-defaults.h

@@ -12,70 +12,64 @@
 
 /*** global variables defined in .c file *********************************************************/
 
-#ifdef USE_INTERNAL_EDIT
-extern GArray *editor_keymap;
-extern GArray *editor_x_keymap;
-
-extern const global_keymap_t *editor_map;
-extern const global_keymap_t *editor_x_map;
-#endif
-
-extern GArray *viewer_keymap;
-extern GArray *viewer_hex_keymap;
 extern GArray *main_keymap;
 extern GArray *main_x_keymap;
 extern GArray *panel_keymap;
+extern GArray *dialog_keymap;
 extern GArray *input_keymap;
 extern GArray *listbox_keymap;
 extern GArray *tree_keymap;
 extern GArray *help_keymap;
-extern GArray *dialog_keymap;
+#ifdef USE_INTERNAL_EDIT
+extern GArray *editor_keymap;
+extern GArray *editor_x_keymap;
+#endif
+extern GArray *viewer_keymap;
+extern GArray *viewer_hex_keymap;
 #ifdef USE_DIFF_VIEW
 extern GArray *diff_keymap;
 #endif
 
+
 extern const global_keymap_t *main_map;
 extern const global_keymap_t *main_x_map;
 extern const global_keymap_t *panel_map;
+extern const global_keymap_t *dialog_map;
 extern const global_keymap_t *input_map;
 extern const global_keymap_t *listbox_map;
 extern const global_keymap_t *tree_map;
 extern const global_keymap_t *help_map;
-extern const global_keymap_t *dialog_map;
+#ifdef USE_INTERNAL_EDIT
+extern const global_keymap_t *editor_map;
+extern const global_keymap_t *editor_x_map;
+#endif
 #ifdef USE_DIFF_VIEW
 extern const global_keymap_t *diff_map;
 #endif
 
-/* viewer/actions_cmd.c */
-extern const global_keymap_t default_viewer_keymap[];
-extern const global_keymap_t default_viewer_hex_keymap[];
-
-#ifdef USE_INTERNAL_EDIT
-/* ../edit/editkey.c */
-extern const global_keymap_t default_editor_keymap[];
-extern const global_keymap_t default_editor_x_keymap[];
-#endif
 
+/* main.c */
+extern const global_keymap_t default_main_map[];
+extern const global_keymap_t default_main_x_map[];
 /* screen.c */
 extern const global_keymap_t default_panel_keymap[];
-
+/* dialog.c */
+extern const global_keymap_t default_dialog_keymap[];
 /* widget.c */
 extern const global_keymap_t default_input_keymap[];
 extern const global_keymap_t default_listbox_keymap[];
-
-/* main.c */
-extern const global_keymap_t default_main_map[];
-extern const global_keymap_t default_main_x_map[];
-
 /* tree.c */
 extern const global_keymap_t default_tree_keymap[];
-
 /* help.c */
 extern const global_keymap_t default_help_keymap[];
-
-/* dialog.c */
-extern const global_keymap_t default_dialog_keymap[];
-
+#ifdef USE_INTERNAL_EDIT
+/* ../edit/editkey.c */
+extern const global_keymap_t default_editor_keymap[];
+extern const global_keymap_t default_editor_x_keymap[];
+#endif
+/* viewer/actions_cmd.c */
+extern const global_keymap_t default_viewer_keymap[];
+extern const global_keymap_t default_viewer_hex_keymap[];
 #ifdef USE_DIFF_VIEW
 /* ydiff.c */
 extern const global_keymap_t default_diff_keymap[];

+ 31 - 31
src/setup.c

@@ -1167,18 +1167,6 @@ load_keymap_defs (void)
 
     if (mc_global_keymap != NULL)
     {
-#ifdef USE_INTERNAL_EDIT
-        editor_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
-        load_keymap_from_section ("editor", editor_keymap, mc_global_keymap);
-        editor_x_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
-        load_keymap_from_section ("editor:xmap", editor_x_keymap, mc_global_keymap);
-#endif
-
-        viewer_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
-        load_keymap_from_section ("viewer", viewer_keymap, mc_global_keymap);
-        viewer_hex_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
-        load_keymap_from_section ("viewer:hex", viewer_hex_keymap, mc_global_keymap);
-
         main_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
         load_keymap_from_section ("main", main_keymap, mc_global_keymap);
         main_x_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
@@ -1187,6 +1175,9 @@ load_keymap_defs (void)
         panel_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
         load_keymap_from_section ("panel", panel_keymap, mc_global_keymap);
 
+        dialog_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
+        load_keymap_from_section ("dialog", dialog_keymap, mc_global_keymap);
+
         input_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
         load_keymap_from_section ("input", input_keymap, mc_global_keymap);
 
@@ -1199,13 +1190,23 @@ load_keymap_defs (void)
         help_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
         load_keymap_from_section ("help", help_keymap, mc_global_keymap);
 
-        dialog_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
-        load_keymap_from_section ("dialog", dialog_keymap, mc_global_keymap);
+#ifdef USE_INTERNAL_EDIT
+        editor_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
+        load_keymap_from_section ("editor", editor_keymap, mc_global_keymap);
+        editor_x_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
+        load_keymap_from_section ("editor:xmap", editor_x_keymap, mc_global_keymap);
+#endif
+
+        viewer_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
+        load_keymap_from_section ("viewer", viewer_keymap, mc_global_keymap);
+        viewer_hex_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
+        load_keymap_from_section ("viewer:hex", viewer_hex_keymap, mc_global_keymap);
 
 #ifdef USE_DIFF_VIEW
         diff_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
         load_keymap_from_section ("diffviewer", diff_keymap, mc_global_keymap);
 #endif
+
         mc_config_deinit (mc_global_keymap);
     }
 
@@ -1221,6 +1222,10 @@ load_keymap_defs (void)
     if (panel_keymap && panel_keymap->len > 0)
         panel_map = (global_keymap_t *) panel_keymap->data;
 
+    dialog_map = default_dialog_keymap;
+    if (dialog_keymap && dialog_keymap->len > 0)
+        dialog_map = (global_keymap_t *) dialog_keymap->data;
+
     input_map = default_input_keymap;
     if (input_keymap && input_keymap->len > 0)
         input_map = (global_keymap_t *) input_keymap->data;
@@ -1237,16 +1242,11 @@ load_keymap_defs (void)
     if (help_keymap && help_keymap->len > 0)
         help_map = (global_keymap_t *) help_keymap->data;
 
-    dialog_map = default_dialog_keymap;
-    if (dialog_keymap && dialog_keymap->len > 0)
-        dialog_map = (global_keymap_t *) dialog_keymap->data;
-
 #ifdef USE_DIFF_VIEW
     diff_map = default_diff_keymap;
     if (diff_keymap && diff_keymap->len > 0)
         diff_map = (global_keymap_t *) diff_keymap->data;
 #endif
-
 }
 
 /* --------------------------------------------------------------------------------------------- */
@@ -1254,22 +1254,14 @@ load_keymap_defs (void)
 void
 free_keymap_defs (void)
 {
-#ifdef USE_INTERNAL_EDIT
-    if (editor_keymap != NULL)
-        g_array_free (editor_keymap, TRUE);
-    if (editor_x_keymap != NULL)
-        g_array_free (editor_x_keymap, TRUE);
-#endif
-    if (viewer_keymap != NULL)
-        g_array_free (viewer_keymap, TRUE);
-    if (viewer_hex_keymap != NULL)
-        g_array_free (viewer_hex_keymap, TRUE);
     if (main_keymap != NULL)
         g_array_free (main_keymap, TRUE);
     if (main_x_keymap != NULL)
         g_array_free (main_x_keymap, TRUE);
     if (panel_keymap != NULL)
         g_array_free (panel_keymap, TRUE);
+    if (dialog_keymap != NULL)
+        g_array_free (dialog_keymap, TRUE);
     if (input_keymap != NULL)
         g_array_free (input_keymap, TRUE);
     if (listbox_keymap != NULL)
@@ -1278,8 +1270,16 @@ free_keymap_defs (void)
         g_array_free (tree_keymap, TRUE);
     if (help_keymap != NULL)
         g_array_free (help_keymap, TRUE);
-    if (dialog_keymap != NULL)
-        g_array_free (dialog_keymap, TRUE);
+#ifdef USE_INTERNAL_EDIT
+    if (editor_keymap != NULL)
+        g_array_free (editor_keymap, TRUE);
+    if (editor_x_keymap != NULL)
+        g_array_free (editor_x_keymap, TRUE);
+#endif
+    if (viewer_keymap != NULL)
+        g_array_free (viewer_keymap, TRUE);
+    if (viewer_hex_keymap != NULL)
+        g_array_free (viewer_hex_keymap, TRUE);
 #ifdef USE_DIFF_VIEW
     if (diff_keymap != NULL)
         g_array_free (diff_keymap, TRUE);