123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550 |
- #ifndef MC__KEYBIND_H
- #define MC__KEYBIND_H
- #include <sys/types.h>
- #include <sys/time.h> /* time_t */
- #include "lib/global.h"
- /*** typedefs(not structures) and defined constants **********************************************/
- #define KEYMAP_SHORTCUT_LENGTH 32 /* FIXME: is 32 bytes enough for shortcut? */
- /* special commands */
- #define CK_Insert_Char -1
- #define CK_Ignore_Key 0
- /* cursor movements */
- #define CK_BackSpace 1
- #define CK_Delete 2
- #define CK_Enter 3
- #define CK_Page_Up 4
- #define CK_Page_Down 5
- #define CK_Left 6
- #define CK_Right 7
- #define CK_Word_Left 8
- #define CK_Word_Right 9
- #define CK_Up 10
- #define CK_Down 11
- #define CK_Home 12
- #define CK_End 13
- #define CK_Tab 14
- #define CK_Undo 15
- #define CK_Redo 16
- #define CK_Beginning_Of_Text 17
- #define CK_End_Of_Text 18
- #define CK_Scroll_Up 19
- #define CK_Scroll_Down 20
- #define CK_Return 21
- #define CK_Begin_Page 22
- #define CK_End_Page 23
- #define CK_Delete_Word_Left 24
- #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
- #define CK_New 103
- #define CK_Save_As 104
- #define CK_Load_Prev_File 111
- #define CK_Load_Next_File 112
- #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
- #define CK_Move 203
- #define CK_Remove 204
- #define CK_Unmark 206
- #define CK_Save_Block 207
- #define CK_Column_Mark 208
- #define CK_Shift_Block_Left 211
- #define CK_Shift_Block_Right 212
- #define CK_Mark_All 213
- /* search and replace */
- #define CK_Find 301
- #define CK_Find_Again 302
- #define CK_Replace 303
- #define CK_Replace_Again 304
- #define CK_Complete_Word 305
- #if 0
- /* debugger commands */
- #define CK_Debug_Start 350
- #define CK_Debug_Stop 351
- #define CK_Debug_Toggle_Break 352
- #define CK_Debug_Clear 353
- #define CK_Debug_Next 354
- #define CK_Debug_Step 355
- #define CK_Debug_Back_Trace 356
- #define CK_Debug_Continue 357
- #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
- #define CK_Help 404
- #define CK_Date 405
- #define CK_Refresh 406
- #define CK_Goto 407
- #define CK_Delete_Line 408
- #define CK_Delete_To_Line_End 409
- #define CK_Delete_To_Line_Begin 410
- #define CK_Man_Page 411
- #define CK_Sort 412
- #define CK_Mail 413
- #define CK_Cancel 414
- #define CK_Complete 415
- #define CK_Paragraph_Format 416
- #define CK_Util 417
- #define CK_Type_Load_Python 418
- #define CK_Find_File 419
- #define CK_Ctags 420
- #define CK_Match_Bracket 421
- #define CK_Terminal 422
- #define CK_Terminal_App 423
- #define CK_ExtCmd 424
- #define CK_User_Menu 425
- #define CK_Find_Definition 426
- #define CK_Edit_Options 427
- #define CK_Edit_Save_Mode 428
- #define CK_Choose_Syntax 429
- #define CK_About 430
- #if 0
- /* application control */
- #define CK_Save_Desktop 451
- #define CK_New_Window 452
- #define CK_Cycle 453
- #define CK_Save_And_Quit 455
- #define CK_Run_Another 456
- #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
- #define CK_Left_Highlight 606
- #define CK_Right_Highlight 607
- #define CK_Word_Left_Highlight 608
- #define CK_Word_Right_Highlight 609
- #define CK_Up_Highlight 610
- #define CK_Down_Highlight 611
- #define CK_Home_Highlight 612
- #define CK_End_Highlight 613
- #define CK_Beginning_Of_Text_Highlight 614
- #define CK_End_Of_Text_Highlight 615
- #define CK_Begin_Page_Highlight 616
- #define CK_End_Page_Highlight 617
- #define CK_Scroll_Up_Highlight 618
- #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
- #define CK_Left_Alt_Highlight 656
- #define CK_Right_Alt_Highlight 657
- #define CK_Word_Left_Alt_Highlight 658
- #define CK_Word_Right_Alt_Highlight 659
- #define CK_Up_Alt_Highlight 660
- #define CK_Down_Alt_Highlight 661
- #define CK_Home_Alt_Highlight 662
- #define CK_End_Alt_Highlight 663
- #define CK_Beginning_Of_Text_Alt_Highlight 664
- #define CK_End_Of_Text_Alt_Highlight 665
- #define CK_Begin_Page_Alt_Highlight 666
- #define CK_End_Page_Alt_Highlight 667
- #define CK_Scroll_Up_Alt_Highlight 668
- #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
- /* C-x or similar */
- #define CK_Ext_Mode 820
- #define CK_Insert_Literal 851
- #define CK_Execute_Macro 852
- #define CK_Begin_End_Macro 853
- /* 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
- /* viewer */
- #define CK_ViewHelp 5001
- #define CK_ViewToggleWrapMode 5002
- #define CK_ViewToggleHexEditMode 5003
- #define CK_ViewToggleHexMode 5004
- #define CK_ViewGoto 5005
- #define CK_ViewHexEditSave 5006
- #define CK_ViewSearch 5007
- #define CK_ViewToggleMagicMode 5008
- #define CK_ViewToggleNroffMode 5009
- #define CK_ViewQuit 5010
- #define CK_ViewContinueSearch 5011
- #define CK_ViewGotoBookmark 5012
- #define CK_ViewNewBookmark 5013
- #define CK_ViewMoveUp 5014
- #define CK_ViewMoveDown 5015
- #define CK_ViewMoveLeft 5016
- #define CK_ViewMoveRight 5017
- #define CK_ViewMovePgDn 5018
- #define CK_ViewMovePgUp 5019
- #define CK_ViewMoveHalfPgDn 5020
- #define CK_ViewMoveHalfPgUp 5021
- #define CK_ViewMoveToBol 5022
- #define CK_ViewMoveToEol 5023
- #define CK_ViewNextFile 5024
- #define CK_ViewPrevFile 5025
- #define CK_ViewToggleRuler 5026
- #define CK_ViewToggleHexNavMode 5027
- #define CK_ViewMoveTop 5028
- #define CK_ViewMoveBottom 5029
- #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
- /* diff viewer */
- #define CK_DiffDisplaySymbols 9001
- #define CK_DiffDisplayNumbers 9002
- #define CK_DiffFull 9003
- #define CK_DiffEqual 9004
- #define CK_DiffSplitMore 9005
- #define CK_DiffSplitLess 9006
- #define CK_DiffShowDiff 9008
- #define CK_DiffSetTab2 9009
- #define CK_DiffSetTab3 9010
- #define CK_DiffSetTab4 9011
- #define CK_DiffSetTab8 9012
- #define CK_DiffSwapPanel 9013
- #define CK_DiffRedo 9014
- #define CK_DiffNextHunk 9015
- #define CK_DiffPrevHunk 9016
- #define CK_DiffGoto 9017
- #define CK_DiffEditCurrent 9018
- #define CK_DiffEditOther 9019
- #define CK_DiffSearch 9020
- #define CK_DiffEOF 9021
- #define CK_DiffBOF 9022
- #define CK_DiffDown 9023
- #define CK_DiffUp 9024
- #define CK_DiffLeft 9025
- #define CK_DiffRight 9026
- #define CK_DiffQuickLeft 9027
- #define CK_DiffQuickRight 9028
- #define CK_DiffPageDown 9029
- #define CK_DiffPageUp 9030
- #define CK_DiffHome 9031
- #define CK_DiffEnd 9032
- #define CK_DiffQuit 9033
- #define CK_DiffHelp 9034
- #define CK_DiffMergeCurrentHunk 9035
- #define CK_DiffSave 9036
- #define CK_DiffContinueSearch 9037
- #define CK_DiffOptions 9038
- /*
- Process a block through a shell command: CK_Pipe_Block(i) executes shell_cmd[i].
- shell_cmd[i] must process the file ~/cooledit.block and output ~/cooledit.block
- which is then inserted into the text in place of the original block. shell_cmd[i] must
- also produce a file homedir/cooledit.error . If this file is not empty an error will
- have been assumed to have occured, and the block will not be replaced.
- TODO: bring up a viewer to display the error message instead of inserting
- it into the text, which is annoying.
- */
- #define CK_Pipe_Block(i) (1000+(i))
- #define SHELL_COMMANDS_i {"/edit.indent.rc", "/edit.spell.rc", /* and so on */ 0 }
- #define CK_Macro(i) (2000+(i))
- #define CK_Last_Macro CK_Macro(0x7FFF)
- /*** enums ***************************************************************************************/
- /*** structures declarations (and typedefs of structures)*****************************************/
- typedef struct name_keymap_t
- {
- const char *name;
- unsigned long val;
- } name_keymap_t;
- typedef struct key_config_t
- {
- time_t mtime; /* mtime at the moment we read config file */
- GArray *keymap;
- GArray *ext_keymap;
- gchar *labels[10];
- } key_config_t;
- /* The global keymaps are of this type */
- typedef struct global_keymap_t
- {
- long key;
- unsigned 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, unsigned long action);
- unsigned long keybind_lookup_action (const char *name);
- const char *keybind_lookup_keymap_shortcut (const global_keymap_t * keymap, unsigned long action);
- unsigned long keybind_lookup_keymap_command (const global_keymap_t * keymap, long key);
- /*** inline functions ****************************************************************************/
- #endif /* MC__KEYBIND_H */
|