* add new commands into cmddef.h
* add user keybind in widgets * add widget keybindings Signed-off-by: Ilia Maslakov <il.smind@google.com>
Этот коммит содержится в:
родитель
606dce4e8b
Коммит
5a397a6b9a
@ -3119,7 +3119,7 @@ edit_execute_cmd (WEdit *edit, int command, int char_for_insertion)
|
||||
case CK_Shell:
|
||||
view_other_cmd ();
|
||||
break;
|
||||
case CK_Select_Codepage:
|
||||
case CK_SelectCodepage:
|
||||
edit_select_codepage_cmd (edit);
|
||||
break;
|
||||
case CK_Insert_Literal:
|
||||
|
@ -132,7 +132,7 @@ static const global_key_map_t common_key_map[] = {
|
||||
{ XCTRL ('o'), CK_Shell },
|
||||
{ XCTRL ('s'), CK_Toggle_Syntax },
|
||||
{ XCTRL ('u'), CK_Undo },
|
||||
{ XCTRL ('t'), CK_Select_Codepage },
|
||||
{ XCTRL ('t'), CK_SelectCodepage },
|
||||
{ XCTRL ('q'), CK_Insert_Literal },
|
||||
{ XCTRL ('a'), CK_Execute_Macro },
|
||||
{ XCTRL ('r'), CK_Begin_End_Macro },
|
||||
|
@ -227,7 +227,7 @@ menu_replace_cmd (void)
|
||||
static void
|
||||
menu_select_codepage_cmd (void)
|
||||
{
|
||||
menu_cmd (CK_Select_Codepage);
|
||||
menu_cmd (CK_SelectCodepage);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1,14 +1,58 @@
|
||||
[editor]
|
||||
XStore = ctrl g
|
||||
XPaste = ctrl v
|
||||
XCut = ctrl x
|
||||
Delete-Line = ctrl y
|
||||
EditXStore = ctrl g
|
||||
EditXPaste = ctrl v
|
||||
EditXCut = ctrl x
|
||||
EditDeleteLine = ctrl y
|
||||
|
||||
[viewer:hex]
|
||||
HexViewToggleNavigationMode = tab
|
||||
ViewMoveToBol = ctrl a; home
|
||||
ViewMoveToEol = ctrl e; end
|
||||
ViewMoveLeft = b; left
|
||||
ViewMoveRight = f; right
|
||||
ViewMoveUp = k; y; up
|
||||
ViewMoveDown = j; delete; down
|
||||
|
||||
[viewer]
|
||||
ViewSearch = ?; /; f7
|
||||
ViewContinueSearch = ctrl r; ctrl s; f17
|
||||
ViewMoveToBol = home
|
||||
ViewMoveToEol = end
|
||||
ViewMoveLeft = h; left
|
||||
ViewMoveRight = l; right
|
||||
ViewMoveUp = k; y; insert; up
|
||||
ViewMoveDown = j; e; delete; down
|
||||
ViewMovePgDn = f; space; pgdn
|
||||
ViewMovePgUp = b; pgup
|
||||
ViewMoveHalfPgDn = d
|
||||
ViewMoveHalfPgUp = u
|
||||
ViewGotoBookmark = m
|
||||
ViewNewBookmark = r
|
||||
ViewNextFile = ctrl f
|
||||
ViewPrevFile = ctrl b
|
||||
ViewQuit = q; esc
|
||||
SelectCodepage = ctrl t
|
||||
ShowCommandLine = ctrl o
|
||||
ViewToggleRuler = alt r
|
||||
|
||||
[main]
|
||||
FindCmd = alt f7
|
||||
ViewOtherCmd = ctrl o
|
||||
CmdMenuLastSelected = f19
|
||||
CmdQuietQuit = f20
|
||||
CmdSingleDirsize = ctrl @
|
||||
CmdCopyCurrentPathname = alt a
|
||||
CmdCopyOtherPathname = alt A
|
||||
CmdQuickCd = alt c
|
||||
CmdQuickChdir = ctrl \\
|
||||
CmdSuspend = ctrl z
|
||||
CmdFilteredView = alt !
|
||||
CmdFind = alt ?
|
||||
CmdReread = ctrl r
|
||||
CmdToggleListing = alt t
|
||||
CmdSwapPanel = ctrl u
|
||||
ShowCommandLine = ctrl o
|
||||
|
||||
[panel:xmap]
|
||||
ExtMap1 = ctrl x
|
||||
[main:xmap]
|
||||
|
||||
|
||||
[panel]
|
||||
@ -18,6 +62,8 @@ PanelMoveDown = down
|
||||
PanelMoveUp = up
|
||||
PanelMoveLeft = left
|
||||
PanelMoveRight = right
|
||||
PanelMoveHome = home
|
||||
PanelMoveEnd = end
|
||||
PanelPrevPage = pgup
|
||||
PanelNextPage = pgdn
|
||||
PanelDoEnter = enter
|
||||
@ -42,3 +88,30 @@ PanelSyncOtherPanel = alt i
|
||||
PanelGotoTopFile = alt g
|
||||
PanelSetPanelEncoding = ctrl t
|
||||
|
||||
[panel:xmap]
|
||||
|
||||
[widget]
|
||||
WidgetBol = ctrl a; alt <; home
|
||||
WidgetEol = ctrl e; alt >;end
|
||||
WidgetMoveLeft = alt left
|
||||
WidgetWordLeft = ctrl left
|
||||
WidgetBackwardChar = ctrl b
|
||||
WidgetBackwardWord = alt b
|
||||
WidgetMoveRight = alt right
|
||||
WidgetWordRight = ctrl right
|
||||
WidgetForwardChar = ctrl f
|
||||
WidgetForwardWord = alt f
|
||||
|
||||
WidgetBackwardDelete = backspace
|
||||
WidgetDeleteChar = delete
|
||||
WidgetKillWord = alt d
|
||||
WidgetBackwardKillWord = alt backspace
|
||||
WidgetSetMark =
|
||||
WidgetKillRegion = ctrl w
|
||||
WidgetKillSave = alt w
|
||||
WidgetYank = ctrl y
|
||||
WidgetKillLine = ctrl k
|
||||
WidgetHistoryPrev = alt p; ctrl down
|
||||
WidgetHistoryNext = alt n; ctrl up
|
||||
WidgetHistoryShow = alt h
|
||||
WidgetComplete = alt tab
|
||||
|
261
src/cmddef.h
261
src/cmddef.h
@ -42,7 +42,6 @@
|
||||
#define CK_Paragraph_Up 25
|
||||
#define CK_Paragraph_Down 26
|
||||
|
||||
|
||||
/* file commands */
|
||||
#define CK_Save 101
|
||||
#define CK_Load 102
|
||||
@ -174,7 +173,6 @@
|
||||
#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
|
||||
@ -188,129 +186,158 @@
|
||||
#define CK_Ext_Mode 820
|
||||
|
||||
|
||||
#define CK_Select_Codepage 850
|
||||
#define CK_Insert_Literal 851
|
||||
#define CK_Execute_Macro 852
|
||||
#define CK_Begin_End_Macro 853
|
||||
|
||||
|
||||
/* common */
|
||||
#define CK_ShowCommandLine 2001
|
||||
#define CK_SelectCodepage 2002
|
||||
#define CK_StartExtMap1 2021
|
||||
#define CK_StartExtMap2 2022
|
||||
|
||||
/* text fields*/
|
||||
#define CK_WidgetBol 4001
|
||||
#define CK_WidgetEol 4002
|
||||
#define CK_WidgetMoveLeft 4003
|
||||
#define CK_WidgetWordLeft 4004
|
||||
#define CK_WidgetBackwardChar 4005
|
||||
#define CK_WidgetBackwardWord 4006
|
||||
#define CK_WidgetMoveRight 4007
|
||||
#define CK_WidgetWordRight 4008
|
||||
#define CK_WidgetForwardChar 4009
|
||||
#define CK_WidgetForwardWord 4010
|
||||
#define CK_WidgetBackwardDelete 4011
|
||||
#define CK_WidgetDeleteChar 4012
|
||||
#define CK_WidgetKillWord 4013
|
||||
#define CK_WidgetBackwardKillWord 4014
|
||||
#define CK_WidgetSetMark 4015
|
||||
#define CK_WidgetKillRegion 4016
|
||||
#define CK_WidgetKillSave 4017
|
||||
#define CK_WidgetYank 4018
|
||||
#define CK_WidgetKillLine 4020
|
||||
#define CK_WidgetHistoryPrev 4021
|
||||
#define CK_WidgetHistoryNext 4022
|
||||
#define CK_WidgetHistoryShow 4023
|
||||
#define CK_WidgetComplete 4024
|
||||
|
||||
/* Viewer */
|
||||
#define CK_ViewSearch 5001
|
||||
#define CK_ViewContinueSearch 5002
|
||||
#define CK_ViewGotoBookmark 5003
|
||||
#define CK_ViewNewBookmark 5004
|
||||
#define CK_ViewMoveUp 5005
|
||||
#define CK_ViewMoveDown 5006
|
||||
#define CK_ViewMoveLeft 5007
|
||||
#define CK_ViewMoveRight 5008
|
||||
#define CK_ViewMovePgDn 5009
|
||||
#define CK_ViewMovePgUp 5010
|
||||
#define CK_ViewMoveHalfPgDn 5011
|
||||
#define CK_ViewMoveHalfPgUp 5012
|
||||
#define CK_ViewMoveToBol 5013
|
||||
#define CK_ViewMoveToEol 5014
|
||||
#define CK_ViewNextFile 5015
|
||||
#define CK_ViewPrevFile 5016
|
||||
#define CK_ViewToggleRuler 5017
|
||||
#define CK_HexViewToggleNavigationMode 5018
|
||||
#define CK_ViewQuit 5020
|
||||
#define CK_ViewSearch 5001
|
||||
#define CK_ViewContinueSearch 5002
|
||||
#define CK_ViewGotoBookmark 5003
|
||||
#define CK_ViewNewBookmark 5004
|
||||
#define CK_ViewMoveUp 5005
|
||||
#define CK_ViewMoveDown 5006
|
||||
#define CK_ViewMoveLeft 5007
|
||||
#define CK_ViewMoveRight 5008
|
||||
#define CK_ViewMovePgDn 5009
|
||||
#define CK_ViewMovePgUp 5010
|
||||
#define CK_ViewMoveHalfPgDn 5011
|
||||
#define CK_ViewMoveHalfPgUp 5012
|
||||
#define CK_ViewMoveToBol 5013
|
||||
#define CK_ViewMoveToEol 5014
|
||||
#define CK_ViewNextFile 5015
|
||||
#define CK_ViewPrevFile 5016
|
||||
#define CK_ViewToggleRuler 5017
|
||||
#define CK_HexViewToggleNavigationMode 5018
|
||||
#define CK_ViewQuit 5020
|
||||
|
||||
/* main commands */
|
||||
#define CK_ChmodCmd 7001
|
||||
#define CK_ChownAdvancedCmd 7002
|
||||
#define CK_ChownCmd 7003
|
||||
#define CK_CompareDirsCmd 7004
|
||||
#define CK_ConfigureBox 7005
|
||||
#define CK_ConfigureVfs 7006
|
||||
#define CK_ConfirmBox 7007
|
||||
#define CK_CopyCmd 7008
|
||||
#define CK_CopyCurrentPathname 7009
|
||||
#define CK_CopyOtherPathname 7010
|
||||
#define CK_DeleteCmd 7011
|
||||
#define CK_DirsizesCmd 7012
|
||||
#define CK_DisplayBitsBox 7013
|
||||
#define CK_EditCmd 7014
|
||||
#define CK_EditMcMenuCmd 7015
|
||||
#define CK_EditSymlinkCmd 7016
|
||||
#define CK_EditSyntaxCmd 7017
|
||||
#define CK_EditUserMenuCmd 7018
|
||||
#define CK_ExternalPanelize 7020
|
||||
#define CK_FilterCmd 7021
|
||||
#define CK_FilteredViewCmd 7022
|
||||
#define CK_FindCmd 7023
|
||||
#define CK_FishlinkCmd 7024
|
||||
#define CK_FtplinkCmd 7025
|
||||
#define CK_HistoryCmd 7026
|
||||
#define CK_InfoCmd 7027
|
||||
#define CK_JobsCmd 7028
|
||||
#define CK_LayoutCmd 7029
|
||||
#define CK_LearnKeys 7030
|
||||
#define CK_LinkCmd 7031
|
||||
#define CK_ListingCmd 7033
|
||||
#define CK_MenuLastSelectedCmd 7034
|
||||
#define CK_MkdirCmd 7035
|
||||
#define CK_QuickCdCmd 7036
|
||||
#define CK_QuickChdirCmd 7037
|
||||
#define CK_QuickViewCmd 7038
|
||||
#define CK_RenCmd 7039
|
||||
#define CK_RereadCmd 7040
|
||||
#define CK_ReselectVfs 7041
|
||||
#define CK_ReverseSelectionCmd 7043
|
||||
#define CK_SaveSetupCmd 7044
|
||||
#define CK_SelectCmd 7045
|
||||
#define CK_SingleDirsizeCmd 7046
|
||||
#define CK_SuspendCmd 7047
|
||||
#define CK_SwapCmd 7048
|
||||
#define CK_SymlinkCmd 7049
|
||||
#define CK_ToggleListingCmd 7050
|
||||
#define CK_TreeCmd 7051
|
||||
#define CK_UndeleteCmd 7052
|
||||
#define CK_UnselectCmd 7053
|
||||
#define CK_UserFileMenuCmd 7054
|
||||
#define CK_ViewCmd 7055
|
||||
#define CK_ViewFileCmd 7056
|
||||
#define CK_ViewOtherCmd 7057
|
||||
#define CK_QuietQuitCmd 7058
|
||||
#define CK_CopyCurrentTagged 7059
|
||||
#define CK_CopyCurrentReadlink 7060
|
||||
#define CK_CopyOtherReadlink 7061
|
||||
#define CK_AddHotlist 7062
|
||||
#define CK_StartExtCmd 7063
|
||||
#define CK_QuitCmd 7064
|
||||
#define CK_CopyOtherTarget 7065
|
||||
#define CK_CopyOthertReadlink 7066
|
||||
#define CK_ChmodCmd 7001
|
||||
#define CK_ChownAdvancedCmd 7002
|
||||
#define CK_ChownCmd 7003
|
||||
#define CK_CompareDirsCmd 7004
|
||||
#define CK_ConfigureBox 7005
|
||||
#define CK_ConfigureVfs 7006
|
||||
#define CK_ConfirmBox 7007
|
||||
#define CK_CopyCmd 7008
|
||||
#define CK_CopyCurrentPathname 7009
|
||||
#define CK_CopyOtherPathname 7010
|
||||
#define CK_DeleteCmd 7011
|
||||
#define CK_DirsizesCmd 7012
|
||||
#define CK_DisplayBitsBox 7013
|
||||
#define CK_EditCmd 7014
|
||||
#define CK_EditMcMenuCmd 7015
|
||||
#define CK_EditSymlinkCmd 7016
|
||||
#define CK_EditSyntaxCmd 7017
|
||||
#define CK_EditUserMenuCmd 7018
|
||||
#define CK_ExternalPanelize 7020
|
||||
#define CK_FilterCmd 7021
|
||||
#define CK_FilteredViewCmd 7022
|
||||
#define CK_FindCmd 7023
|
||||
#define CK_FishlinkCmd 7024
|
||||
#define CK_FtplinkCmd 7025
|
||||
#define CK_HistoryCmd 7026
|
||||
#define CK_InfoCmd 7027
|
||||
#define CK_JobsCmd 7028
|
||||
#define CK_LayoutCmd 7029
|
||||
#define CK_LearnKeys 7030
|
||||
#define CK_LinkCmd 7031
|
||||
#define CK_ListingCmd 7033
|
||||
#define CK_MenuLastSelectedCmd 7034
|
||||
#define CK_MkdirCmd 7035
|
||||
#define CK_QuickCdCmd 7036
|
||||
#define CK_QuickChdirCmd 7037
|
||||
#define CK_QuickViewCmd 7038
|
||||
#define CK_RenCmd 7039
|
||||
#define CK_RereadCmd 7040
|
||||
#define CK_ReselectVfs 7041
|
||||
#define CK_ReverseSelectionCmd 7043
|
||||
#define CK_SaveSetupCmd 7044
|
||||
#define CK_SelectCmd 7045
|
||||
#define CK_SingleDirsizeCmd 7046
|
||||
#define CK_SuspendCmd 7047
|
||||
#define CK_SwapCmd 7048
|
||||
#define CK_SymlinkCmd 7049
|
||||
#define CK_ToggleListingCmd 7050
|
||||
#define CK_TreeCmd 7051
|
||||
#define CK_UndeleteCmd 7052
|
||||
#define CK_UnselectCmd 7053
|
||||
#define CK_UserFileMenuCmd 7054
|
||||
#define CK_ViewCmd 7055
|
||||
#define CK_ViewFileCmd 7056
|
||||
#define CK_QuietQuitCmd 7058
|
||||
#define CK_CopyCurrentTagged 7059
|
||||
#define CK_CopyCurrentReadlink 7060
|
||||
#define CK_CopyOtherReadlink 7061
|
||||
#define CK_AddHotlist 7062
|
||||
#define CK_QuitCmd 7064
|
||||
#define CK_CopyOtherTarget 7065
|
||||
#define CK_CopyOthertReadlink 7066
|
||||
|
||||
|
||||
#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_PanelCtrlNextPage 8012
|
||||
#define CK_PanelCtrlPrevPage 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_PanelMoveDown 8021
|
||||
#define CK_PanelMoveEnd 8022
|
||||
#define CK_PanelMoveHome 8023
|
||||
#define CK_PanelMoveUp 8024
|
||||
#define CK_PanelMoveLeft 8025
|
||||
#define CK_PanelMoveRight 8026
|
||||
#define CK_PanelNextPage 8027
|
||||
#define CK_PanelPrevPage 8028
|
||||
#define CK_PanelSetPanelEncoding 8029
|
||||
#define CK_PanelStartSearch 8030
|
||||
#define CK_PanelSyncOtherPanel 8031
|
||||
/* 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_PanelCtrlNextPage 8012
|
||||
#define CK_PanelCtrlPrevPage 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_PanelMoveDown 8021
|
||||
#define CK_PanelMoveEnd 8022
|
||||
#define CK_PanelMoveHome 8023
|
||||
#define CK_PanelMoveUp 8024
|
||||
#define CK_PanelMoveLeft 8025
|
||||
#define CK_PanelMoveRight 8026
|
||||
#define CK_PanelNextPage 8027
|
||||
#define CK_PanelPrevPage 8028
|
||||
#define CK_PanelSetPanelEncoding 8029
|
||||
#define CK_PanelStartSearch 8030
|
||||
#define CK_PanelSyncOtherPanel 8031
|
||||
|
||||
/*
|
||||
Process a block through a shell command: CK_Pipe_Block(i) executes shell_cmd[i].
|
||||
|
@ -49,6 +49,8 @@
|
||||
#include "tty/key.h" /* KEY_M_ */
|
||||
#include "tty/tty.h" /* keys */
|
||||
#include "wtools.h"
|
||||
#include "strutil.h"
|
||||
|
||||
#include "keybind.h"
|
||||
|
||||
static const name_key_map_t command_names[] = {
|
||||
@ -169,7 +171,6 @@ static const name_key_map_t command_names[] = {
|
||||
{ "EditXPaste", CK_XPaste },
|
||||
{ "EditSelectionHistory", CK_Selection_History },
|
||||
{ "EditShell", CK_Shell },
|
||||
{ "EditSelectCodepage", CK_Select_Codepage },
|
||||
{ "EditInsertLiteral", CK_Insert_Literal },
|
||||
{ "EditExecuteMacro", CK_Execute_Macro },
|
||||
{ "EditBeginorEndMacro", CK_Begin_End_Macro },
|
||||
@ -208,6 +209,12 @@ static const name_key_map_t command_names[] = {
|
||||
|
||||
/* main commands */
|
||||
{ "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 },
|
||||
@ -255,11 +262,9 @@ static const name_key_map_t command_names[] = {
|
||||
{ "CmdUserFileMenu", CK_UserFileMenuCmd },
|
||||
{ "CmdView", CK_ViewCmd },
|
||||
{ "CmdViewFile", CK_ViewFileCmd },
|
||||
{ "CmdViewOther", CK_ViewOtherCmd },
|
||||
{ "CmdCmdCopyCurrentReadlink", CK_CopyCurrentReadlink },
|
||||
{ "CmdCopyOtherReadlink", CK_CopyOtherReadlink },
|
||||
{ "CmdAddHotlist", CK_AddHotlist },
|
||||
{ "CmdStartExt", CK_StartExtCmd },
|
||||
{ "CmdQuit", CK_QuitCmd },
|
||||
{ "CmdCopyOtherTarget", CK_CopyOtherTarget },
|
||||
{ "CmdCopyOthertReadlink", CK_CopyOthertReadlink },
|
||||
@ -296,6 +301,38 @@ static const name_key_map_t command_names[] = {
|
||||
{ "PanelSetPanelEncoding", CK_PanelSetPanelEncoding },
|
||||
{ "PanelStartSearch", CK_PanelStartSearch },
|
||||
{ "PanelSyncOtherPanel", CK_PanelSyncOtherPanel },
|
||||
|
||||
/* widgets */
|
||||
{ "WidgetBol", CK_WidgetBol },
|
||||
{ "WidgetEol", CK_WidgetEol },
|
||||
{ "WidgetMoveLeft", CK_WidgetMoveLeft },
|
||||
{ "WidgetWordLeft", CK_WidgetWordLeft },
|
||||
{ "WidgetBackwardChar", CK_WidgetBackwardChar },
|
||||
{ "WidgetBackwardWord", CK_WidgetBackwardWord },
|
||||
{ "WidgetMoveRight", CK_WidgetMoveRight },
|
||||
{ "WidgetWordRight", CK_WidgetWordRight },
|
||||
{ "WidgetForwardChar", CK_WidgetForwardChar },
|
||||
{ "WidgetForwardWord", CK_WidgetForwardWord },
|
||||
{ "WidgetBackwardDelete", CK_WidgetBackwardDelete },
|
||||
{ "WidgetDeleteChar", CK_WidgetDeleteChar },
|
||||
{ "WidgetKillWord", CK_WidgetKillWord },
|
||||
{ "WidgetBackwardKillWord", CK_WidgetBackwardKillWord },
|
||||
{ "WidgetSetMark", CK_WidgetSetMark },
|
||||
{ "WidgetKillRegion", CK_WidgetKillRegion },
|
||||
{ "WidgetKillSave", CK_WidgetKillSave },
|
||||
{ "WidgetYank", CK_WidgetYank },
|
||||
{ "WidgetKillLine", CK_WidgetKillLine },
|
||||
{ "WidgetHistoryPrev", CK_WidgetHistoryPrev },
|
||||
{ "WidgetHistoryNext", CK_WidgetHistoryNext },
|
||||
{ "WidgetHistoryShow", CK_WidgetHistoryShow },
|
||||
{ "WidgetComplete", CK_WidgetComplete },
|
||||
|
||||
/* common */
|
||||
{ "ExtMap1", CK_StartExtMap1 },
|
||||
{ "ExtMap2", CK_StartExtMap2 },
|
||||
{ "ShowCommandLine", CK_ShowCommandLine },
|
||||
{ "SelectCodepage", CK_SelectCodepage },
|
||||
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
@ -314,7 +351,6 @@ void
|
||||
keymap_add(GArray *keymap, int key, int cmd)
|
||||
{
|
||||
global_key_map_t new_bind, *map;
|
||||
guint i;
|
||||
map = &(g_array_index(keymap, global_key_map_t, 0));
|
||||
|
||||
if (key !=0 && cmd !=0) {
|
||||
|
14
src/main.c
14
src/main.c
@ -310,6 +310,7 @@ GArray *viewer_hex_keymap = NULL;
|
||||
GArray *main_keymap = NULL;
|
||||
GArray *main_x_keymap = NULL;
|
||||
GArray *panel_keymap = NULL;
|
||||
GArray *widget_keymap = NULL;
|
||||
|
||||
const global_key_map_t *main_map;
|
||||
const global_key_map_t *main_x_map;
|
||||
@ -337,8 +338,8 @@ static const global_key_map_t default_main_map[] = {
|
||||
/* Swap panels */
|
||||
{XCTRL ('u'), CK_SwapCmd},
|
||||
/* View output */
|
||||
{XCTRL ('o'), CK_ViewOtherCmd},
|
||||
{XCTRL ('x'), CK_StartExtCmd},
|
||||
{XCTRL ('o'), CK_ShowCommandLine},
|
||||
{XCTRL ('x'), CK_StartExtMap1 },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
@ -1299,7 +1300,7 @@ execute_cmd(int command)
|
||||
case CK_SwapCmd:
|
||||
swap_cmd ();
|
||||
break;
|
||||
case CK_ViewOtherCmd:
|
||||
case CK_ShowCommandLine:
|
||||
view_other_cmd ();
|
||||
break;
|
||||
case CK_QuitCmd:
|
||||
@ -1340,7 +1341,7 @@ execute_cmd(int command)
|
||||
break;
|
||||
case CK_JobsCmd:
|
||||
break;
|
||||
case CK_StartExtCmd:
|
||||
case CK_StartExtMap1:
|
||||
ctl_x_cmd ();
|
||||
break;
|
||||
}
|
||||
@ -1869,6 +1870,11 @@ do_nc (void)
|
||||
panel_map = (global_key_map_t *) panel_keymap->data;
|
||||
}
|
||||
|
||||
widget_map = default_widget_keymap;
|
||||
|
||||
if (widget_keymap && widget_keymap->len > 0)
|
||||
widget_map = (global_key_map_t *) widget_keymap->data;
|
||||
|
||||
/* Check if we were invoked as an editor or file viewer */
|
||||
if (!mc_maybe_editor_or_viewer ()) {
|
||||
setup_panels_and_run_mc ();
|
||||
|
@ -80,10 +80,14 @@ extern GArray *viewer_hex_keymap;
|
||||
extern GArray *main_keymap;
|
||||
extern GArray *main_x_keymap;
|
||||
extern GArray *panel_keymap;
|
||||
extern GArray *widget_keymap;
|
||||
|
||||
extern const global_key_map_t *panel_map;
|
||||
extern const global_key_map_t default_panel_keymap[];
|
||||
|
||||
extern const global_key_map_t *widget_map;
|
||||
extern const global_key_map_t default_widget_keymap[];
|
||||
|
||||
void do_update_prompt (void);
|
||||
|
||||
enum cd_enum {
|
||||
|
@ -853,7 +853,7 @@ load_keymap_defs (void)
|
||||
viewer_keymap = g_array_new(TRUE, FALSE, sizeof(global_key_map_t));
|
||||
load_keymap_from_section ("viewer", viewer_keymap, mc_global_keymap);
|
||||
|
||||
viewer_keymap = g_array_new(TRUE, FALSE, sizeof(global_key_map_t));
|
||||
viewer_hex_keymap = g_array_new(TRUE, FALSE, sizeof(global_key_map_t));
|
||||
load_keymap_from_section ("viewer:hex", viewer_hex_keymap, mc_global_keymap);
|
||||
|
||||
main_keymap = g_array_new(TRUE, FALSE, sizeof(global_key_map_t));
|
||||
@ -865,6 +865,9 @@ load_keymap_defs (void)
|
||||
panel_keymap = g_array_new(TRUE, FALSE, sizeof(global_key_map_t));
|
||||
load_keymap_from_section ("panel", panel_keymap, mc_global_keymap);
|
||||
|
||||
widget_keymap = g_array_new(TRUE, FALSE, sizeof(global_key_map_t));
|
||||
load_keymap_from_section ("widget", widget_keymap, mc_global_keymap);
|
||||
|
||||
mc_config_deinit(mc_global_keymap);
|
||||
}
|
||||
|
||||
|
@ -109,8 +109,6 @@ const global_key_map_t default_keymap[] = {
|
||||
|
||||
{ 'u', CK_ViewMoveHalfPgUp },
|
||||
|
||||
{ XCTRL('o'), CK_ViewOtherCmd },
|
||||
|
||||
{ 'm', CK_ViewGotoBookmark },
|
||||
{ 'r', CK_ViewNewBookmark },
|
||||
|
||||
@ -121,7 +119,8 @@ const global_key_map_t default_keymap[] = {
|
||||
{ XCTRL ('g'), CK_ViewQuit },
|
||||
{ ESC_CHAR, CK_ViewQuit },
|
||||
|
||||
{ XCTRL ('t'), CK_Select_Codepage },
|
||||
{ XCTRL ('t'), CK_SelectCodepage },
|
||||
{ XCTRL('o'), CK_ShowCommandLine },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
@ -427,7 +426,7 @@ mcview_execute_cmd (mcview_t * view, int command, int key)
|
||||
case CK_ViewMovePgDn:
|
||||
mcview_move_down (view, view->data_area.height);
|
||||
break;
|
||||
case CK_ViewOtherCmd:
|
||||
case CK_ShowCommandLine:
|
||||
view_other_cmd ();
|
||||
break;
|
||||
/*
|
||||
@ -459,7 +458,7 @@ mcview_execute_cmd (mcview_t * view, int command, int key)
|
||||
if (mcview_ok_to_quit (view))
|
||||
view->want_to_quit = TRUE;
|
||||
break;
|
||||
case CK_Select_Codepage:
|
||||
case CK_SelectCodepage:
|
||||
mcview_select_encoding (view);
|
||||
view->dirty++;
|
||||
mcview_update (view);
|
||||
|
211
src/widget.c
211
src/widget.c
@ -54,8 +54,56 @@
|
||||
#include "wtools.h"
|
||||
#include "strutil.h"
|
||||
|
||||
#include "cmddef.h" /* CK_ cmd name const */
|
||||
#include "keybind.h" /* global_key_map_t */
|
||||
|
||||
#define HISTORY_FILE_NAME ".mc/history"
|
||||
|
||||
const global_key_map_t *widget_map;
|
||||
|
||||
const global_key_map_t default_widget_keymap[] = {
|
||||
/* Motion */
|
||||
{ XCTRL('a'), CK_WidgetBol },
|
||||
{ KEY_HOME, CK_WidgetBol },
|
||||
{ KEY_A1, CK_WidgetBol },
|
||||
{ ALT ('<'), CK_WidgetBol },
|
||||
{ XCTRL('e'), CK_WidgetEol },
|
||||
{ KEY_END, CK_WidgetEol },
|
||||
{ KEY_C1, CK_WidgetEol },
|
||||
{ ALT ('>'), CK_WidgetEol },
|
||||
{ KEY_LEFT, CK_WidgetMoveLeft },
|
||||
{ KEY_LEFT | KEY_M_CTRL, CK_WidgetWordLeft },
|
||||
{ KEY_RIGHT, CK_WidgetMoveRight },
|
||||
{ KEY_RIGHT | KEY_M_CTRL, CK_WidgetWordRight },
|
||||
|
||||
{ XCTRL('b'), CK_WidgetBackwardChar },
|
||||
{ ALT('b'), CK_WidgetBackwardWord },
|
||||
{ XCTRL('f'), CK_WidgetForwardChar },
|
||||
{ ALT('f'), CK_WidgetForwardWord },
|
||||
|
||||
/* Editing */
|
||||
{ KEY_BACKSPACE, CK_WidgetBackwardDelete },
|
||||
{ KEY_DC, CK_WidgetDeleteChar },
|
||||
{ ALT('d'), CK_WidgetKillWord },
|
||||
{ ALT(KEY_BACKSPACE), CK_WidgetBackwardKillWord },
|
||||
|
||||
/* Region manipulation */
|
||||
{ 0, CK_WidgetSetMark },
|
||||
{ XCTRL('w'), CK_WidgetKillRegion },
|
||||
{ ALT('w'), CK_WidgetKillSave },
|
||||
{ XCTRL('y'), CK_WidgetYank },
|
||||
{ XCTRL('k'), CK_WidgetKillLine },
|
||||
|
||||
/* History */
|
||||
{ ALT('p'), CK_WidgetHistoryPrev },
|
||||
{ ALT('n'), CK_WidgetHistoryNext },
|
||||
{ ALT('h'), CK_WidgetHistoryShow },
|
||||
|
||||
/* Completion */
|
||||
{ ALT('\t'), CK_WidgetComplete },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
static void
|
||||
widget_selectcolor (Widget *w, gboolean focused, gboolean hotkey)
|
||||
{
|
||||
@ -1669,26 +1717,6 @@ static const struct {
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
/* This function is a test for a special input key used in complete.c */
|
||||
/* Returns 0 if it is not a special key, 1 if it is a non-complete key
|
||||
and 2 if it is a complete key */
|
||||
int
|
||||
is_in_input_map (WInput *in, int c_code)
|
||||
{
|
||||
int i;
|
||||
|
||||
(void) in;
|
||||
|
||||
for (i = 0; input_map [i].fn; i++)
|
||||
if (c_code == input_map [i].key_code) {
|
||||
if (input_map [i].fn == complete)
|
||||
return 2;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
port_region_marked_for_delete (WInput *in)
|
||||
{
|
||||
@ -1698,39 +1726,136 @@ port_region_marked_for_delete (WInput *in)
|
||||
in->charpoint = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
widget_execute_cmd (WInput *in, int command, int key)
|
||||
{
|
||||
switch (command) {
|
||||
case CK_WidgetBol:
|
||||
beginning_of_line (in);
|
||||
break;
|
||||
case CK_WidgetEol:
|
||||
end_of_line (in);
|
||||
break;
|
||||
case CK_WidgetMoveLeft:
|
||||
key_left (in);
|
||||
break;
|
||||
case CK_WidgetWordLeft:
|
||||
key_ctrl_left (in);
|
||||
break;
|
||||
case CK_WidgetMoveRight:
|
||||
key_right (in);
|
||||
break;
|
||||
case CK_WidgetWordRight:
|
||||
key_ctrl_right (in);
|
||||
break;
|
||||
case CK_WidgetBackwardChar:
|
||||
backward_char (in);
|
||||
break;
|
||||
case CK_WidgetBackwardWord:
|
||||
backward_word (in);
|
||||
break;
|
||||
case CK_WidgetForwardChar:
|
||||
forward_char (in);
|
||||
break;
|
||||
case CK_WidgetForwardWord:
|
||||
forward_word (in);
|
||||
break;
|
||||
case CK_WidgetBackwardDelete:
|
||||
backward_delete (in);
|
||||
break;
|
||||
case CK_WidgetDeleteChar:
|
||||
delete_char (in);
|
||||
break;
|
||||
case CK_WidgetKillWord:
|
||||
kill_word (in);
|
||||
break;
|
||||
case CK_WidgetBackwardKillWord:
|
||||
back_kill_word (in);
|
||||
break;
|
||||
case CK_WidgetSetMark:
|
||||
set_mark (in);
|
||||
break;
|
||||
case CK_WidgetKillRegion:
|
||||
kill_region (in);
|
||||
break;
|
||||
case CK_WidgetKillSave:
|
||||
kill_save (in);
|
||||
break;
|
||||
case CK_WidgetYank:
|
||||
yank (in);
|
||||
break;
|
||||
case CK_WidgetKillLine:
|
||||
kill_line (in);
|
||||
break;
|
||||
case CK_WidgetHistoryPrev:
|
||||
hist_prev (in);
|
||||
break;
|
||||
case CK_WidgetHistoryNext:
|
||||
hist_next (in);
|
||||
break;
|
||||
case CK_WidgetHistoryShow:
|
||||
do_show_hist (in);
|
||||
break;
|
||||
case CK_WidgetComplete:
|
||||
complete (in);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* This function is a test for a special input key used in complete.c */
|
||||
/* Returns 0 if it is not a special key, 1 if it is a non-complete key
|
||||
and 2 if it is a complete key */
|
||||
int
|
||||
is_in_input_map (WInput *in, int key)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; widget_map[i].key; i++) {
|
||||
if (key == widget_map[i].key) {
|
||||
widget_execute_cmd (in, widget_map[i].command, key);
|
||||
if (widget_map[i].command == CK_WidgetComplete)
|
||||
return 2;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
cb_ret_t
|
||||
handle_char (WInput *in, int c_code)
|
||||
handle_char (WInput *in, int key)
|
||||
{
|
||||
cb_ret_t v;
|
||||
int i;
|
||||
|
||||
v = MSG_NOT_HANDLED;
|
||||
|
||||
if (quote){
|
||||
free_completions (in);
|
||||
v = insert_char (in, c_code);
|
||||
update_input (in, 1);
|
||||
quote = 0;
|
||||
return v;
|
||||
if (quote) {
|
||||
free_completions (in);
|
||||
v = insert_char (in, key);
|
||||
update_input (in, 1);
|
||||
quote = 0;
|
||||
return v;
|
||||
}
|
||||
|
||||
for (i = 0; input_map [i].fn; i++){
|
||||
if (c_code == input_map [i].key_code){
|
||||
if (input_map [i].fn != complete)
|
||||
free_completions (in);
|
||||
(*input_map [i].fn)(in);
|
||||
v = MSG_HANDLED;
|
||||
break;
|
||||
}
|
||||
for (i = 0; widget_map[i].key; i++) {
|
||||
if (key == widget_map[i].key) {
|
||||
if (widget_map[i].command != CK_WidgetComplete) {
|
||||
free_completions (in);
|
||||
widget_execute_cmd (in, widget_map[i].command, key);
|
||||
update_input (in, 1);
|
||||
v = MSG_HANDLED;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!input_map [i].fn){
|
||||
if (c_code > 255)
|
||||
return MSG_NOT_HANDLED;
|
||||
if (in->first){
|
||||
port_region_marked_for_delete (in);
|
||||
}
|
||||
free_completions (in);
|
||||
v = insert_char (in, c_code);
|
||||
if (widget_map[i].command == 0) {
|
||||
if (key > 255)
|
||||
return MSG_NOT_HANDLED;
|
||||
if (in->first)
|
||||
port_region_marked_for_delete (in);
|
||||
free_completions (in);
|
||||
v = insert_char (in, key);
|
||||
}
|
||||
update_input (in, 1);
|
||||
return v;
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user