summaryrefslogtreecommitdiffstats
path: root/lib/keybind.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/keybind.h367
1 files changed, 367 insertions, 0 deletions
diff --git a/lib/keybind.h b/lib/keybind.h
new file mode 100644
index 0000000..9c0fe98
--- /dev/null
+++ b/lib/keybind.h
@@ -0,0 +1,367 @@
+#ifndef MC__KEYBIND_H
+#define MC__KEYBIND_H
+
+#include "lib/global.h"
+
+/*** typedefs(not structures) and defined constants **********************************************/
+
+/* keymap sections */
+#define KEYMAP_SECTION_FILEMANAGER "filemanager"
+#define KEYMAP_SECTION_FILEMANAGER_EXT "filemanager:xmap"
+#define KEYMAP_SECTION_PANEL "panel"
+#define KEYMAP_SECTION_DIALOG "dialog"
+#define KEYMAP_SECTION_MENU "menu"
+#define KEYMAP_SECTION_INPUT "input"
+#define KEYMAP_SECTION_LISTBOX "listbox"
+#define KEYMAP_SECTION_RADIO "radio"
+#define KEYMAP_SECTION_TREE "tree"
+#define KEYMAP_SECTION_HELP "help"
+#define KEYMAP_SECTION_CHATTR "chattr"
+#define KEYMAP_SECTION_EDITOR "editor"
+#define KEYMAP_SECTION_EDITOR_EXT "editor:xmap"
+#define KEYMAP_SECTION_VIEWER "viewer"
+#define KEYMAP_SECTION_VIEWER_HEX "viewer:hex"
+#define KEYMAP_SECTION_DIFFVIEWER "diffviewer"
+
+#define KEYMAP_SHORTCUT_LENGTH 32 /* FIXME: is 32 bytes enough for shortcut? */
+
+#define CK_PipeBlock(i) (10000+(i))
+#define CK_Macro(i) (20000+(i))
+#define CK_MacroLast CK_Macro(0x7FFF)
+
+/*** enums ***************************************************************************************/
+
+enum
+{
+ /* special commands */
+ CK_InsertChar = -1L,
+ CK_IgnoreKey = 0L,
+
+ /* common */
+ CK_Enter = 1L,
+ CK_ChangePanel,
+ CK_Up,
+ CK_Down,
+ CK_Left,
+ CK_Right,
+ CK_Home,
+ CK_End,
+ CK_LeftQuick,
+ CK_RightQuick,
+ CK_PageUp,
+ CK_PageDown,
+ CK_HalfPageUp,
+ CK_HalfPageDown,
+ CK_Top,
+ CK_Bottom,
+ CK_TopOnScreen,
+ CK_MiddleOnScreen,
+ CK_BottomOnScreen,
+ CK_WordLeft,
+ CK_WordRight,
+ CK_Copy,
+ CK_Move,
+ CK_Delete,
+ CK_MakeDir,
+ CK_ChangeMode,
+ CK_ChangeOwn,
+ CK_ChangeOwnAdvanced,
+ CK_ChangeAttributes,
+ CK_Remove,
+ CK_BackSpace,
+ CK_Redo,
+ CK_Clear,
+ CK_Menu,
+ CK_MenuLastSelected,
+ CK_UserMenu,
+ CK_EditUserMenu,
+ CK_Search,
+ CK_SearchContinue,
+ CK_Replace,
+ CK_ReplaceContinue,
+ CK_SearchStop,
+ CK_Help,
+ CK_Edit,
+ CK_EditNew,
+ CK_Shell,
+ CK_SelectCodepage,
+ CK_EditorViewerHistory,
+ CK_History,
+ CK_HistoryNext,
+ CK_HistoryPrev,
+ CK_Complete,
+ CK_Save,
+ CK_SaveAs,
+ CK_Goto,
+ CK_Reread,
+ CK_Refresh,
+ CK_Suspend,
+ CK_Swap,
+ CK_Mark,
+ CK_HotList,
+ CK_ScreenList,
+ CK_ScreenNext,
+ CK_ScreenPrev,
+ CK_FilePrev,
+ CK_FileNext,
+ CK_DeleteToHome,
+ CK_DeleteToEnd,
+ CK_DeleteToWordBegin,
+ CK_DeleteToWordEnd,
+ CK_ShowNumbers,
+ CK_Store,
+ CK_Cut,
+ CK_Paste,
+ CK_MarkLeft,
+ CK_MarkRight,
+ CK_MarkUp,
+ CK_MarkDown,
+ CK_MarkToWordBegin,
+ CK_MarkToWordEnd,
+ CK_MarkToHome,
+ CK_MarkToEnd,
+ CK_ToggleNavigation,
+ CK_Sort,
+ CK_Options,
+ CK_LearnKeys,
+ CK_Bookmark,
+ CK_Quit,
+ CK_QuitQuiet,
+ /* C-x or similar */
+ CK_ExtendedKeyMap,
+
+ /* main commands */
+ CK_EditForceInternal = 100L,
+ CK_View,
+ CK_ViewRaw,
+ CK_ViewFile,
+ CK_ViewFiltered,
+ CK_Find,
+ CK_DirSize,
+ CK_HotListAdd,
+ CK_SetupListingFormat,
+ CK_CompareDirs,
+ CK_OptionsVfs,
+ CK_OptionsConfirm,
+ CK_PutCurrentLink,
+ CK_PutOtherLink,
+ CK_OptionsDisplayBits,
+ CK_EditExtensionsFile,
+ CK_EditFileHighlightFile,
+ CK_LinkSymbolicEdit,
+ CK_ExternalPanelize,
+ CK_Filter,
+ CK_ConnectFish,
+ CK_ConnectFtp,
+ CK_ConnectSftp,
+ CK_PanelInfo,
+ CK_Jobs,
+ CK_OptionsLayout,
+ CK_OptionsAppearance,
+ CK_Link,
+ CK_PanelListing,
+ CK_ListMode,
+ CK_CdQuick,
+ CK_PanelQuickView,
+ CK_VfsList,
+ CK_SaveSetup,
+ CK_LinkSymbolic,
+ CK_ShowHidden,
+ CK_PanelTree,
+ CK_Tree,
+ CK_Undelete,
+ CK_SplitVertHoriz,
+ CK_SplitEqual,
+ CK_SplitMore,
+ CK_SplitLess,
+ CK_CompareFiles,
+ CK_OptionsPanel,
+ CK_LinkSymbolicRelative,
+ CK_PutCurrentPath,
+ CK_PutOtherPath,
+ CK_PutCurrentSelected,
+ CK_PutCurrentFullSelected,
+ CK_PutCurrentTagged,
+ CK_PutOtherTagged,
+ CK_Select,
+ CK_Unselect,
+ CK_SelectExt,
+ CK_SelectInvert,
+
+ /* panels */
+ CK_PanelOtherCd = 200L,
+ CK_PanelOtherCdLink,
+ CK_Panelize,
+ CK_CopySingle,
+ CK_MoveSingle,
+ CK_DeleteSingle,
+ CK_CdChild,
+ CK_CdParent,
+ CK_CdParentSmart,
+ CK_PanelOtherSync,
+ CK_SortNext,
+ CK_SortPrev,
+ CK_SortReverse,
+ CK_SortByName,
+ CK_SortByExt,
+ CK_SortBySize,
+ CK_SortByMTime,
+ CK_ScrollLeft,
+ CK_ScrollRight,
+ CK_CycleListingFormat,
+
+ /* dialog */
+ CK_Ok = 300L,
+ CK_Cancel,
+
+ /* input */
+ CK_Yank = 350L,
+
+ /* help */
+ CK_Index = 400L,
+ CK_Back,
+ CK_LinkNext,
+ CK_LinkPrev,
+ CK_NodeNext,
+ CK_NodePrev,
+
+ /* tree */
+ CK_Forget = 450L,
+
+ /* chattr dialog */
+ CK_MarkAndDown = 480L,
+
+ /* editor */
+ /* cursor movements */
+ CK_Tab = 500L,
+ CK_Undo,
+ CK_ScrollUp,
+ CK_ScrollDown,
+ CK_Return,
+ CK_ParagraphUp,
+ CK_ParagraphDown,
+ /* file commands */
+ CK_EditFile,
+ CK_InsertFile,
+ CK_EditSyntaxFile,
+ CK_Close,
+ /* block commands */
+ CK_BlockSave,
+ CK_BlockShiftLeft,
+ CK_BlockShiftRight,
+ CK_DeleteLine,
+ /* bookmarks */
+ CK_BookmarkFlush,
+ CK_BookmarkNext,
+ CK_BookmarkPrev,
+ /* mark commands */
+ CK_MarkColumn,
+ CK_MarkWord,
+ CK_MarkLine,
+ CK_MarkAll,
+ CK_Unmark,
+ CK_MarkPageUp,
+ CK_MarkPageDown,
+ CK_MarkToFileBegin,
+ CK_MarkToFileEnd,
+ CK_MarkToPageBegin,
+ CK_MarkToPageEnd,
+ CK_MarkScrollUp,
+ CK_MarkScrollDown,
+ CK_MarkParagraphUp,
+ CK_MarkParagraphDown,
+ /* column mark commands */
+ CK_MarkColumnPageUp,
+ CK_MarkColumnPageDown,
+ CK_MarkColumnLeft,
+ CK_MarkColumnRight,
+ CK_MarkColumnUp,
+ CK_MarkColumnDown,
+ CK_MarkColumnScrollUp,
+ CK_MarkColumnScrollDown,
+ CK_MarkColumnParagraphUp,
+ CK_MarkColumnParagraphDown,
+ /* macros */
+ CK_MacroStartRecord,
+ CK_MacroStopRecord,
+ CK_MacroStartStopRecord,
+ CK_MacroDelete,
+ CK_RepeatStartRecord,
+ CK_RepeatStopRecord,
+ CK_RepeatStartStopRecord,
+ /* window commands */
+ CK_WindowMove,
+ CK_WindowResize,
+ CK_WindowFullscreen,
+ CK_WindowList,
+ CK_WindowNext,
+ CK_WindowPrev,
+ /* misc commands */
+ CK_SpellCheck,
+ CK_SpellCheckCurrentWord,
+ CK_SpellCheckSelectLang,
+ CK_InsertOverwrite,
+ CK_ParagraphFormat,
+ CK_MatchBracket,
+ CK_OptionsSaveMode,
+ CK_About,
+ CK_ShowMargin,
+ CK_ShowTabTws,
+ CK_SyntaxOnOff,
+ CK_SyntaxChoose,
+ CK_InsertLiteral,
+ CK_ExternalCommand,
+ CK_Date,
+ CK_EditMail,
+
+ /* viewer */
+ CK_WrapMode = 600L,
+ CK_MagicMode,
+ CK_NroffMode,
+ CK_HexMode,
+ CK_HexEditMode,
+ CK_BookmarkGoto,
+ CK_Ruler,
+ CK_SearchForward,
+ CK_SearchBackward,
+ CK_SearchForwardContinue,
+ CK_SearchBackwardContinue,
+ CK_SearchOppositeContinue,
+
+ /* diff viewer */
+ CK_ShowSymbols = 700L,
+ CK_SplitFull,
+ CK_Tab2,
+ CK_Tab3,
+ CK_Tab4,
+ CK_Tab8,
+ CK_HunkNext,
+ CK_HunkPrev,
+ CK_EditOther,
+ CK_Merge,
+ CK_MergeOther
+};
+
+/*** structures declarations (and typedefs of structures)*****************************************/
+
+/* The global keymaps are of this type */
+typedef struct global_keymap_t
+{
+ long key;
+ long command;
+ char caption[KEYMAP_SHORTCUT_LENGTH];
+} global_keymap_t;
+
+/*** global variables defined in .c file *********************************************************/
+
+/*** declarations of public functions ************************************************************/
+
+void keybind_cmd_bind (GArray * keymap, const char *keybind, long action);
+long keybind_lookup_action (const char *name);
+const char *keybind_lookup_actionname (long action);
+const char *keybind_lookup_keymap_shortcut (const global_keymap_t * keymap, long action);
+long keybind_lookup_keymap_command (const global_keymap_t * keymap, long key);
+
+/*** inline functions ****************************************************************************/
+
+#endif /* MC__KEYBIND_H */