Added two macro examples:
[midnight-commander/osp/hnatuluk1.git] / lib / keybind.h
blob7a7f1b80ff9007a152b3b2c41a163c5ce627e1a1
1 #ifndef MC__KEYBIND_H
2 #define MC__KEYBIND_H
4 #include <sys/types.h>
5 #include <sys/time.h> /* time_t */
7 #include "lib/global.h"
9 /*** typedefs(not structures) and defined constants **********************************************/
11 #define KEYMAP_SHORTCUT_LENGTH 32 /* FIXME: is 32 bytes enough for shortcut? */
13 /* special commands */
14 #define CK_Insert_Char -1
15 #define CK_Ignore_Key 0
17 /* cursor movements */
18 #define CK_BackSpace 1
19 #define CK_Delete 2
20 #define CK_Enter 3
21 #define CK_Page_Up 4
22 #define CK_Page_Down 5
23 #define CK_Left 6
24 #define CK_Right 7
25 #define CK_Word_Left 8
26 #define CK_Word_Right 9
27 #define CK_Up 10
28 #define CK_Down 11
29 #define CK_Home 12
30 #define CK_End 13
31 #define CK_Tab 14
32 #define CK_Undo 15
33 #define CK_Redo 16
34 #define CK_Beginning_Of_Text 17
35 #define CK_End_Of_Text 18
36 #define CK_Scroll_Up 19
37 #define CK_Scroll_Down 20
38 #define CK_Return 21
39 #define CK_Begin_Page 22
40 #define CK_End_Page 23
41 #define CK_Delete_Word_Left 24
42 #define CK_Delete_Word_Right 25
43 #define CK_Paragraph_Up 26
44 #define CK_Paragraph_Down 27
46 /* file commands */
47 #define CK_Save 101
48 #define CK_Load 102
49 #define CK_New 103
50 #define CK_Save_As 104
51 #define CK_Load_Prev_File 111
52 #define CK_Load_Next_File 112
53 #define CK_Load_Syntax_File 121
54 #define CK_Load_Menu_File 122
55 #define CK_Menu 123
57 /* block commands */
58 #define CK_Mark 201
59 #define CK_Copy 202
60 #define CK_Move 203
61 #define CK_Remove 204
62 #define CK_Unmark 206
63 #define CK_Save_Block 207
64 #define CK_Column_Mark 208
65 #define CK_Shift_Block_Left 211
66 #define CK_Shift_Block_Right 212
67 #define CK_Mark_All 213
68 #define CK_Mark_Word 214
69 #define CK_Mark_Line 215
71 /* search and replace */
72 #define CK_Find 301
73 #define CK_Find_Again 302
74 #define CK_Replace 303
75 #define CK_Replace_Again 304
76 #define CK_Complete_Word 305
78 #if 0
79 /* debugger commands */
80 #define CK_Debug_Start 350
81 #define CK_Debug_Stop 351
82 #define CK_Debug_Toggle_Break 352
83 #define CK_Debug_Clear 353
84 #define CK_Debug_Next 354
85 #define CK_Debug_Step 355
86 #define CK_Debug_Back_Trace 356
87 #define CK_Debug_Continue 357
88 #define CK_Debug_Enter_Command 358
89 #define CK_Debug_Until_Curser 359
90 #endif
92 /* misc */
93 #define CK_Insert_File 401
94 #define CK_Quit 402
95 #define CK_Toggle_Insert 403
96 #define CK_Help 404
97 #define CK_Date 405
98 #define CK_Refresh 406
99 #define CK_Goto 407
100 #define CK_Delete_Line 408
101 #define CK_Delete_To_Line_End 409
102 #define CK_Delete_To_Line_Begin 410
103 #define CK_Man_Page 411
104 #define CK_Sort 412
105 #define CK_Mail 413
106 #define CK_Cancel 414
107 #define CK_Complete 415
108 #define CK_Paragraph_Format 416
109 #define CK_Util 417
110 #define CK_Type_Load_Python 418
111 #define CK_Find_File 419
112 #define CK_Ctags 420
113 #define CK_Match_Bracket 421
114 #define CK_Terminal 422
115 #define CK_Terminal_App 423
116 #define CK_ExtCmd 424
117 #define CK_User_Menu 425
118 #define CK_Find_Definition 426
119 #define CK_Edit_Options 427
120 #define CK_Edit_Save_Mode 428
121 #define CK_Choose_Syntax 429
122 #define CK_About 430
124 #if 0
125 /* application control */
126 #define CK_Save_Desktop 451
127 #define CK_New_Window 452
128 #define CK_Cycle 453
129 #define CK_Save_And_Quit 455
130 #define CK_Run_Another 456
131 #define CK_Check_Save_And_Quit 457
132 #define CK_Maximize 458
133 #endif
135 #define CK_Toggle_Show_Margin 460
136 #define CK_Toggle_Tab_TWS 470
137 #define CK_Toggle_Syntax 480
138 #define CK_Toggle_Line_State 490
140 /* macro */
141 #define CK_Begin_Record_Macro 501
142 #define CK_End_Record_Macro 502
143 #define CK_Delete_Macro 503
145 /* book mark */
146 #define CK_Toggle_Bookmark 550
147 #define CK_Flush_Bookmarks 551
148 #define CK_Next_Bookmark 552
149 #define CK_Prev_Bookmark 553
151 /* highlight commands */
152 #define CK_Page_Up_Highlight 604
153 #define CK_Page_Down_Highlight 605
154 #define CK_Left_Highlight 606
155 #define CK_Right_Highlight 607
156 #define CK_Word_Left_Highlight 608
157 #define CK_Word_Right_Highlight 609
158 #define CK_Up_Highlight 610
159 #define CK_Down_Highlight 611
160 #define CK_Home_Highlight 612
161 #define CK_End_Highlight 613
162 #define CK_Beginning_Of_Text_Highlight 614
163 #define CK_End_Of_Text_Highlight 615
164 #define CK_Begin_Page_Highlight 616
165 #define CK_End_Page_Highlight 617
166 #define CK_Scroll_Up_Highlight 618
167 #define CK_Scroll_Down_Highlight 619
168 #define CK_Paragraph_Up_Highlight 620
169 #define CK_Paragraph_Down_Highlight 621
171 /* alt highlight commands */
172 #define CK_Page_Up_Alt_Highlight 654
173 #define CK_Page_Down_Alt_Highlight 655
174 #define CK_Left_Alt_Highlight 656
175 #define CK_Right_Alt_Highlight 657
176 #define CK_Word_Left_Alt_Highlight 658
177 #define CK_Word_Right_Alt_Highlight 659
178 #define CK_Up_Alt_Highlight 660
179 #define CK_Down_Alt_Highlight 661
180 #define CK_Home_Alt_Highlight 662
181 #define CK_End_Alt_Highlight 663
182 #define CK_Beginning_Of_Text_Alt_Highlight 664
183 #define CK_End_Of_Text_Alt_Highlight 665
184 #define CK_Begin_Page_Alt_Highlight 666
185 #define CK_End_Page_Alt_Highlight 667
186 #define CK_Scroll_Up_Alt_Highlight 668
187 #define CK_Scroll_Down_Alt_Highlight 669
188 #define CK_Paragraph_Up_Alt_Highlight 670
189 #define CK_Paragraph_Down_Alt_Highlight 671
191 /* X clipboard operations */
192 #define CK_XStore 701
193 #define CK_XCut 702
194 #define CK_XPaste 703
195 #define CK_Selection_History 704
197 #define CK_Shell 801
199 /* C-x or similar */
200 #define CK_Ext_Mode 820
202 #define CK_Insert_Literal 851
203 #define CK_Begin_End_Macro 853
204 #define CK_Begin_End_Repeat 854
205 #define CK_Begin_Record_Repeat 855
206 #define CK_End_Record_Repeat 856
208 /* help */
209 #define CK_HelpHelp 1001
210 #define CK_HelpIndex 1002
211 #define CK_HelpBack 1003
212 #define CK_HelpQuit 1004
213 #define CK_HelpMoveUp 1005
214 #define CK_HelpMoveDown 1006
215 #define CK_HelpSelectLink 1007
216 #define CK_HelpNextLink 1008
217 #define CK_HelpPrevLink 1009
218 #define CK_HelpNextNode 1010
219 #define CK_HelpPrevNode 1011
220 #define CK_HelpMovePgDn 1012
221 #define CK_HelpMovePgUp 1013
222 #define CK_HelpMoveHalfPgDn 1014
223 #define CK_HelpMoveHalfPgUp 1015
224 #define CK_HelpMoveTop 1016
225 #define CK_HelpMoveBottom 1017
227 /* common */
228 #define CK_ShowCommandLine 2001
229 #define CK_SelectCodepage 2002
230 #define CK_StartExtMap1 2021
231 #define CK_StartExtMap2 2022
233 /* dialog */
234 #define CK_DialogOK 3001
235 #define CK_DialogCancel 3002
236 #define CK_DialogPrevItem 3003
237 #define CK_DialogNextItem 3004
238 #define CK_DialogHelp 3005
239 #define CK_DialogSuspend 3006
240 #define CK_DialogRefresh 3007
242 /* text fields */
243 #define CK_InputBol 4001
244 #define CK_InputEol 4002
245 #define CK_InputMoveLeft 4003
246 #define CK_InputWordLeft 4004
247 #define CK_InputBackwardChar 4005
248 #define CK_InputBackwardWord 4006
249 #define CK_InputMoveRight 4007
250 #define CK_InputWordRight 4008
251 #define CK_InputForwardChar 4009
252 #define CK_InputForwardWord 4010
253 #define CK_InputBackwardDelete 4011
254 #define CK_InputDeleteChar 4012
255 #define CK_InputKillWord 4013
256 #define CK_InputBackwardKillWord 4014
257 #define CK_InputSetMark 4015
258 #define CK_InputKillRegion 4016
259 #define CK_InputKillSave 4017
260 #define CK_InputYank 4018
261 #define CK_InputCopyRegion 4019
262 #define CK_InputKillLine 4020
263 #define CK_InputHistoryPrev 4021
264 #define CK_InputHistoryNext 4022
265 #define CK_InputHistoryShow 4023
266 #define CK_InputComplete 4024
267 #define CK_InputPaste 4025
268 #define CK_InputClearLine 4026
269 #define CK_InputLeftHighlight 4027
270 #define CK_InputRightHighlight 4028
271 #define CK_InputWordLeftHighlight 4029
272 #define CK_InputWordRightHighlight 4030
273 #define CK_InputBolHighlight 4031
274 #define CK_InputEolHighlight 4032
276 /* listbox */
277 #define CK_ListboxMoveUp 4500
278 #define CK_ListboxMoveDown 4501
279 #define CK_ListboxMoveHome 4502
280 #define CK_ListboxMoveEnd 4503
281 #define CK_ListboxMovePgUp 4504
282 #define CK_ListboxMovePgDn 4505
283 #define CK_ListboxDeleteItem 4506
284 #define CK_ListboxDeleteAll 4507
286 /* viewer */
287 #define CK_ViewHelp 5001
288 #define CK_ViewToggleWrapMode 5002
289 #define CK_ViewToggleHexEditMode 5003
290 #define CK_ViewToggleHexMode 5004
291 #define CK_ViewGoto 5005
292 #define CK_ViewHexEditSave 5006
293 #define CK_ViewSearch 5007
294 #define CK_ViewToggleMagicMode 5008
295 #define CK_ViewToggleNroffMode 5009
296 #define CK_ViewQuit 5010
297 #define CK_ViewContinueSearch 5011
298 #define CK_ViewGotoBookmark 5012
299 #define CK_ViewNewBookmark 5013
300 #define CK_ViewMoveUp 5014
301 #define CK_ViewMoveDown 5015
302 #define CK_ViewMoveLeft 5016
303 #define CK_ViewMoveRight 5017
304 #define CK_ViewMovePgDn 5018
305 #define CK_ViewMovePgUp 5019
306 #define CK_ViewMoveHalfPgDn 5020
307 #define CK_ViewMoveHalfPgUp 5021
308 #define CK_ViewMoveToBol 5022
309 #define CK_ViewMoveToEol 5023
310 #define CK_ViewNextFile 5024
311 #define CK_ViewPrevFile 5025
312 #define CK_ViewToggleRuler 5026
313 #define CK_ViewToggleHexNavMode 5027
314 #define CK_ViewMoveTop 5028
315 #define CK_ViewMoveBottom 5029
316 #define CK_ViewMoveLeft10 5030
317 #define CK_ViewMoveRight10 5031
319 /* tree */
320 #define CK_TreeHelp 6001
321 #define CK_TreeForget 6003
322 #define CK_TreeToggleNav 6004
323 #define CK_TreeCopy 6005
324 #define CK_TreeMove 6006
325 #define CK_TreeMake 6007
326 #define CK_TreeMoveUp 6011
327 #define CK_TreeMoveDown 6012
328 #define CK_TreeMoveLeft 6013
329 #define CK_TreeMoveRight 6014
330 #define CK_TreeMoveHome 6015
331 #define CK_TreeMoveEnd 6016
332 #define CK_TreeMovePgUp 6017
333 #define CK_TreeMovePgDn 6018
334 #define CK_TreeOpen 6019
335 #define CK_TreeRescan 6020
336 #define CK_TreeStartSearch 6021
337 #define CK_TreeRemove 6022
339 /* main commands */
340 #define CK_AddHotlist 7001
341 #define CK_ChangeListingCmd 7002
342 #define CK_ChmodCmd 7003
343 #define CK_ChownAdvancedCmd 7004
344 #define CK_ChownCmd 7005
345 #define CK_CompareDirsCmd 7006
346 #define CK_ConfigureBox 7007
347 #define CK_ConfigureVfs 7008
348 #define CK_ConfirmBox 7009
349 #define CK_CopyCmd 7010
350 #define CK_CopyCurrentPathname 7011
351 #define CK_CopyCurrentReadlink 7012
352 #define CK_CopyCurrentTagged 7013
353 #define CK_CopyOtherPathname 7014
354 #define CK_CopyOtherReadlink 7015
355 #define CK_CopyOtherTagged 7016
356 #define CK_DeleteCmd 7017
357 #define CK_DirsizesCmd 7018
358 #define CK_DisplayBitsBox 7019
359 #define CK_EditCmd 7020
360 #define CK_EditExtFileCmd 7021
361 #define CK_EditFhlFileCmd 7022
362 #define CK_EditMcMenuCmd 7023
363 #define CK_EditSymlinkCmd 7024
364 #define CK_EditSyntaxCmd 7025
365 #define CK_EditUserMenuCmd 7026
366 #define CK_ExternalPanelize 7027
367 #define CK_FilterCmd 7028
368 #define CK_FilteredViewCmd 7029
369 #define CK_FindCmd 7030
370 #define CK_FishlinkCmd 7031
371 #define CK_FtplinkCmd 7032
372 #define CK_HistoryCmd 7033
373 #define CK_InfoCmd 7034
374 #define CK_JobsCmd 7035
375 #define CK_LayoutBox 7036
376 #define CK_LearnKeys 7037
377 #define CK_LinkCmd 7038
378 #define CK_ListingCmd 7039
379 #define CK_ListmodeCmd 7042
380 #define CK_MenuLastSelectedCmd 7044
381 #define CK_MkdirCmd 7045
382 #define CK_QuickCdCmd 7047
383 #define CK_QuickChdirCmd 7048
384 #define CK_QuickViewCmd 7049
385 #define CK_QuietQuitCmd 7050
386 #define CK_QuitCmd 7051
387 #define CK_RenameCmd 7052
388 #define CK_RereadCmd 7053
389 #define CK_ReselectVfs 7054
390 #define CK_ReverseSelectionCmd 7055
391 #define CK_SaveSetupCmd 7056
392 #define CK_SelectCmd 7057
393 #define CK_SingleDirsizeCmd 7058
394 #define CK_SmblinkCmd 7059
395 #define CK_SuspendCmd 7060
396 #define CK_SwapCmd 7061
397 #define CK_SymlinkCmd 7062
398 #define CK_ToggleListingCmd 7063
399 #define CK_ToggleShowHidden 7064
400 #define CK_TreeCmd 7065
401 #define CK_TreeBoxCmd 7066
402 #define CK_UndeleteCmd 7067
403 #define CK_UnselectCmd 7068
404 #define CK_UserFileMenuCmd 7069
405 #define CK_UserMenuCmd 7070
406 #define CK_ViewCmd 7071
407 #define CK_ViewFileCmd 7072
408 #define CK_HelpCmd 7073
409 #define CK_MenuCmd 7074
410 #define CK_TogglePanelsSplit 7075
411 #define CK_DiffViewCmd 7076
412 #define CK_PanelOptionsBox 7077
413 #define CK_RelativeSymlinkCmd 7078
414 #define CK_DialogListCmd 7079
415 #define CK_DialogNextCmd 7080
416 #define CK_DialogPrevCmd 7081
417 #define CK_EditForceInternalCmd 7082
419 /* panels */
420 #define CK_PanelChdirOtherPanel 8001
421 #define CK_PanelChdirToReadlink 8002
422 #define CK_PanelCmdCopyLocal 8003
423 #define CK_PanelCmdDeleteLocal 8004
424 #define CK_PanelCmdDoEnter 8005
425 #define CK_PanelCmdEditNew 8006
426 #define CK_PanelCmdRenameLocal 8007
427 #define CK_PanelCmdReverseSelection 8008
428 #define CK_PanelCmdSelect 8009
429 #define CK_PanelCmdUnselect 8010
430 #define CK_PanelCmdViewSimple 8011
431 #define CK_PanelGotoChildDir 8012
432 #define CK_PanelGotoParentDir 8013
433 #define CK_PanelDirectoryHistoryList 8014
434 #define CK_PanelDirectoryHistoryNext 8015
435 #define CK_PanelDirectoryHistoryPrev 8016
436 #define CK_PanelGotoBottomFile 8017
437 #define CK_PanelGotoMiddleFile 8018
438 #define CK_PanelGotoTopFile 8019
439 #define CK_PanelMarkFile 8020
440 #define CK_PanelMarkFileUp 8021
441 #define CK_PanelMarkFileDown 8022
442 #define CK_PanelMoveDown 8023
443 #define CK_PanelMoveEnd 8024
444 #define CK_PanelMoveHome 8025
445 #define CK_PanelMoveUp 8026
446 #define CK_PanelMoveLeft 8027
447 #define CK_PanelMoveRight 8028
448 #define CK_PanelNextPage 8029
449 #define CK_PanelPrevPage 8030
450 #define CK_PanelSetPanelEncoding 8031
451 #define CK_PanelStartSearch 8032
452 #define CK_PanelStopSearch 8033
453 #define CK_PanelSyncOtherPanel 8034
454 #define CK_PanelToggleSortOrderNext 8035
455 #define CK_PanelToggleSortOrderPrev 8036
456 #define CK_PanelSelectSortOrder 8037
457 #define CK_PanelReverseSort 8038
458 #define CK_PanelSortOrderByName 8039
459 #define CK_PanelSortOrderByExt 8040
460 #define CK_PanelSortOrderBySize 8041
461 #define CK_PanelSortOrderByMTime 8042
462 #define CK_PanelSmartGotoParentDir 8043
464 /* diff viewer */
465 #define CK_DiffDisplaySymbols 9001
466 #define CK_DiffDisplayNumbers 9002
467 #define CK_DiffFull 9003
468 #define CK_DiffEqual 9004
469 #define CK_DiffSplitMore 9005
470 #define CK_DiffSplitLess 9006
471 #define CK_DiffShowDiff 9008
472 #define CK_DiffSetTab2 9009
473 #define CK_DiffSetTab3 9010
474 #define CK_DiffSetTab4 9011
475 #define CK_DiffSetTab8 9012
476 #define CK_DiffSwapPanel 9013
477 #define CK_DiffRedo 9014
478 #define CK_DiffNextHunk 9015
479 #define CK_DiffPrevHunk 9016
480 #define CK_DiffGoto 9017
481 #define CK_DiffEditCurrent 9018
482 #define CK_DiffEditOther 9019
483 #define CK_DiffSearch 9020
484 #define CK_DiffEOF 9021
485 #define CK_DiffBOF 9022
486 #define CK_DiffDown 9023
487 #define CK_DiffUp 9024
488 #define CK_DiffLeft 9025
489 #define CK_DiffRight 9026
490 #define CK_DiffQuickLeft 9027
491 #define CK_DiffQuickRight 9028
492 #define CK_DiffPageDown 9029
493 #define CK_DiffPageUp 9030
494 #define CK_DiffHome 9031
495 #define CK_DiffEnd 9032
496 #define CK_DiffQuit 9033
497 #define CK_DiffHelp 9034
498 #define CK_DiffMergeCurrentHunk 9035
499 #define CK_DiffSave 9036
500 #define CK_DiffContinueSearch 9037
501 #define CK_DiffOptions 9038
503 #define CK_Pipe_Block(i) (10000+(i))
504 #define CK_Macro(i) (20000+(i))
505 #define CK_Last_Macro CK_Macro(0x7FFF)
507 /*** enums ***************************************************************************************/
509 /*** structures declarations (and typedefs of structures)*****************************************/
511 typedef struct name_keymap_t
513 const char *name;
514 unsigned long val;
515 } name_keymap_t;
517 typedef struct key_config_t
519 time_t mtime; /* mtime at the moment we read config file */
520 GArray *keymap;
521 GArray *ext_keymap;
522 gchar *labels[10];
523 } key_config_t;
525 /* The global keymaps are of this type */
526 typedef struct global_keymap_t
528 long key;
529 unsigned long command;
530 char caption[KEYMAP_SHORTCUT_LENGTH];
531 } global_keymap_t;
533 /*** global variables defined in .c file *********************************************************/
535 /*** declarations of public functions ************************************************************/
537 void keybind_cmd_bind (GArray * keymap, const char *keybind, unsigned long action);
538 unsigned long keybind_lookup_action (const char *name);
539 const char *keybind_lookup_actionname (unsigned long action);
540 const char *keybind_lookup_keymap_shortcut (const global_keymap_t * keymap, unsigned long action);
541 unsigned long keybind_lookup_keymap_command (const global_keymap_t * keymap, long key);
543 /*** inline functions ****************************************************************************/
545 #endif /* MC__KEYBIND_H */