fix: main.c keys handler

add more keys into mc.keymap
    fix: CK_SingleDirsizeCmd event
    add default keys (alt-'.', alt-'+') mc.keymap

Signed-off-by: Ilia Maslakov <il.smind@google.com>

    Added alt-shift-h hotkey
    Add some documentation about keymap file.
    Replace some symbols into names '.' to 'dot', '?' to question, etc.

Signed-off-by: Slava Zanko <slavazanko@gmail.com>
This commit is contained in:
Ilia Maslakov 2009-09-28 20:25:46 +00:00
parent 23b81fac46
commit 87102cc7e8
9 changed files with 170 additions and 26 deletions

View File

@ -59,6 +59,9 @@ Display the compiled\-in search paths for Midnight Commander files.
Reset softkeys to their default from the termcap/terminfo
database. Only useful on HP terminals when the function keys don't work.
.TP
.I \-K файл
Specify a name of keymap file in the command line.
.TP
.I \-l file, \-\-ftplog=file
Save the ftpfs dialog with the server in file.
.TP
@ -268,7 +271,16 @@ release it, then type the character <chr>.
means hold the Shift key down while typing <chr>.
.PP
All input lines in the Midnight Commander use an approximation to
the GNU Emacs editor's key bindings.
the GNU Emacs editor's key bindings (default).
.PP
You may redefine key bindings. See
.\"LINK2"
.I redefine hotkey bindings
.\"Keys_redefine"
.PP
for more info. All other key bindings (described in this manual) relative
to default behavior.
.PP
There are many sections which tell about the keys. The following are
the most important.
@ -304,6 +316,52 @@ Input Line Keys
.\"Input Line Keys"
are used for editing input lines. This means both the command line and
the input lines in the query dialogs.
.\"NODE " Keys_redefine"
.SH " Redefine hotkey bindings"
Hotkey bindings may be readed from external file (keymap\-file).
A keymap\-file is searched on the following algorithm (to the first one found):
.IP
.br
1) command line option
.BR \-K
.BR \<keymap\>
or
.BR \-\-keymap=\<keymap\>
.br
2) Environment variable
.BR MC_KEYMAP
.br
3) In config file parameter
.BR keymap
in section
.BR \[Midhight
.BR Commander\]
.br
4) File
.BR ~/.mc/mc.keymap
.br
5) File
.BR /etc/mc/mc.keymap
.br
6) File
.BR @prefix@/share/mc/mc.keymap
.PP
Command line option, environment variable and parameter in config file may
contain the absolute path to the keymap\-file (with the extension \.keymap
or without it). Search of keymap\-file will occur in (to the first one found):
.IP
1)
.BR ~/.mc/
.br
2)
.BR /etc/mc/
.br
3)
.BR @prefix@/share/mc/
.br
.\"NODE " Miscellaneous Keys"
.SH " Miscellaneous Keys"
Here are some keys which don't fall into any of the other categories:

View File

@ -72,6 +72,10 @@ UNIX\-подобных операционных системах.
termcap/terminfo. Этот ключ используется только на терминалах HP, где
функциональные клавиши не работают.
.TP
.I \-K файл
Задаёт файл клавиатурных команд для переопределения привязки хоткеев
к действиям.
.TP
.I \-l файл
Сохранить диалог с ftp\-сервером, а также отладочную информацию smbfs в
файл file.
@ -259,8 +263,18 @@ Control и, удерживая ее, нажмите (коротким щелчк
S\-<символ> означает, что нужно держать в нажатом состоянии клавишу Shift
во время удара по клавише <символ>.
.PP
Все строки ввода в Midnight Commander поддерживают соглашения об
использовании "горячих" клавиш, принятые в редакторе GNU Emacs.
Все строки ввода в Midnight Commander по умолчанию поддерживают соглашения
об использовании "горячих" клавиш, принятые в редакторе GNU Emacs.
.PP
Вы можете переопределить клавиатурные привязки хоткеев к командам, как
это описано в разделе
.\"LINK2"
.I переопределение клавиатурных команд
.\"Keys_redefine"
.PP
Все последующие описания клавиатурных команд относятся к поведению по
умолчанию.
.PP
Описания клавиатурных команд даются в нескольких разделах помощи.
Наиболее важными являются следующие разделы:
@ -299,6 +313,54 @@ S\-<символ> означает, что нужно держать в нажа
.\"Input Line Keys"
используются как при редактировании командной строки, так и других строк
ввода, появляющихся в различных запросах программы.
.\"NODE " Keys_redefine"
.SH " Переопределение клавиатурных команд"
Клавиатурные команды могут быть прочитаны из внешнего файла.
Поиск файла клавиатурных команд производится по следующему алгоритму
(до первого нахождения файла):
.IP
.br
1) параметр командной строки
.BR \-K
.BR \<файл\>
или
.BR \-\-keymap=\<файл\>
.br
2) Переменная окружения
.BR MC_KEYMAP
.br
3) В конфигурационном файле параметр
.BR keymap
в секции
.BR \[Midhight
.BR Commander\]
.br
4) Файл
.BR ~/.mc/mc.keymap
.br
5) Файл
.BR /etc/mc/mc.keymap
.br
6) Файл
.BR @prefix@/share/mc/mc.keymap
.PP
Параметры в трёх первых случаях могут содержать абсолютный путь к файлу
клавиатурных команд либо просто название схемы привязки (с расширением
\.keymap либо без него). В данном случае поиск файла клавиатурных команд
будет происходить по следующим каталогам (до первого нахождения):
.IP
1)
.BR ~/.mc/
.br
2)
.BR /etc/mc/
.br
3)
.BR @prefix@/share/mc/
.br
.\"NODE " Miscellaneous Keys"
.SH " Разные команды"
Имеется несколько действий, ассоциированных с некоторыми комбинациями

View File

@ -723,10 +723,8 @@ static void
edit_set_keymap (WEdit *edit)
{
edit->user_map = default_editor_keymap;
if (editor_keymap && editor_keymap->len > 0) {
if (editor_keymap && editor_keymap->len > 0)
edit->user_map = (global_key_map_t *) editor_keymap->data;
mc_log ("edit->user_map");
}
}

View File

@ -156,7 +156,7 @@ ViewMoveUp = k; y; up
ViewMoveDown = j; delete; down
[viewer]
ViewSearch = ?; /; f7
ViewSearch = question; slash; f7
ViewContinueSearch = ctrl-r; ctrl-s; f17
ViewMoveToBol = home
ViewMoveToEol = end
@ -180,18 +180,19 @@ ViewToggleRuler = alt-r
[main]
CmdMenuLastSelected = f19
CmdQuietQuit = f20
CmdSingleDirsize = ctrl-@
CmdSingleDirsize = ctrl-space
CmdCopyCurrentPathname = alt-a
CmdCopyOtherPathname = alt-A
CmdQuickCd = alt-c
CmdQuickChdir = ctrl-\\
CmdQuickChdir = ctrl-backslash
CmdSuspend = ctrl-z
CmdFilteredView = alt-!
CmdFind = alt-?
CmdFilteredView = alt-exclamation
CmdFind = alt-question
CmdReread = ctrl-r
CmdToggleListing = alt-t
CmdSwapPanel = ctrl-u
ShowCommandLine = ctrl-o
CmdToggleShowHidden = alt-dot
ExtMap1 = ctrl-x
[main:xmap]
@ -214,12 +215,12 @@ PanelEditNew = F14
PanelCopyLocal = F15
PanelRenameLocal = F16
PanelDeleteLocal = F18
PanelReverseSelection = alt-*
PanelSelect = plus
PanelUnselect = minus
PanelReverseSelection = alt-asterisk
PanelSelect = alt-plus
PanelUnselect = alt-minus
PanelCtrlNextPage = ctrl-pgdn
PanelCtrlPrevPage = ctrl-pgup
PanelDirectoryHistoryList = alt-H
PanelDirectoryHistoryList = alt-shift-h
PanelDirectoryHistoryNext = alt-u
PanelDirectoryHistoryPrev = alt-y
PanelGotoBottomFile = alt-j
@ -227,15 +228,14 @@ PanelGotoMiddleFile = alt-r
PanelSyncOtherPanel = alt-i
PanelGotoTopFile = alt-g
PanelSetPanelEncoding = ctrl-t
PanelMoveHome = home
PanelMoveEnd = end
PanelMoveHome = alt-lt; home
PanelMoveEnd = alt-gt; end
[panel:xmap]
[input]
InputBol = ctrl-a; alt-<; home
InputEol = ctrl-e; alt->; end
InputBol = ctrl-a; alt-lt; home
InputEol = ctrl-e; alt-gt; end
InputMoveLeft = left; alt-left
InputWordLeft = ctrl-left
InputBackwardChar = ctrl-b

View File

@ -304,7 +304,7 @@
#define CK_AddHotlist 7062
#define CK_QuitCmd 7064
#define CK_CopyOtherTarget 7065
#define CK_CopyOthertReadlink 7066
#define CK_ToggleShowHidden 7066
/* panels */
#define CK_PanelChdirOtherPanel 8001

View File

@ -274,12 +274,12 @@ static const name_key_map_t command_names[] = {
{ "CmdUserFileMenu", CK_UserFileMenuCmd },
{ "CmdView", CK_ViewCmd },
{ "CmdViewFile", CK_ViewFileCmd },
{ "CmdCmdCopyCurrentReadlink", CK_CopyCurrentReadlink },
{ "CmdCopyCurrentReadlink", CK_CopyCurrentReadlink },
{ "CmdCopyOtherReadlink", CK_CopyOtherReadlink },
{ "CmdAddHotlist", CK_AddHotlist },
{ "CmdQuit", CK_QuitCmd },
{ "CmdCopyOtherTarget", CK_CopyOtherTarget },
{ "CmdCopyOthertReadlink", CK_CopyOthertReadlink },
{ "CmdToggleShowHidden", CK_ToggleShowHidden },
/* panel */
{ "PanelChdirOtherPanel", CK_PanelChdirOtherPanel },
@ -611,6 +611,7 @@ const global_key_map_t default_main_map[] = {
{XCTRL ('u'), CK_SwapCmd},
/* View output */
{XCTRL ('o'), CK_ShowCommandLine},
{ALT ('.'), CK_ToggleShowHidden},
{XCTRL ('x'), CK_StartExtMap1 },
{ 0, 0 }
};

View File

@ -47,4 +47,4 @@ extern const global_key_map_t default_input_keymap[];
extern const global_key_map_t default_main_map[];
extern const global_key_map_t default_main_x_map[];
const global_key_map_t default_input_keymap[];
extern const global_key_map_t default_input_keymap[];

View File

@ -1215,7 +1215,7 @@ midnight_execute_cmd(int command)
quiet_quit_cmd ();
break;
case CK_SingleDirsizeCmd:
single_dirsize_cmd ();
smart_dirsize_cmd ();
break;
case CK_CopyCurrentPathname:
copy_current_pathname ();
@ -1251,10 +1251,13 @@ midnight_execute_cmd(int command)
view_other_cmd ();
break;
case CK_QuitCmd:
quit_cmd ();
break;
case CK_CompareDirsCmd:
compare_dirs_cmd ();
break;
case CK_ReselectVfs:
reselect_vfs ();
break;
case CK_CopyCurrentTagged:
copy_current_tagged ();
@ -1265,7 +1268,7 @@ midnight_execute_cmd(int command)
case CK_CopyCurrentReadlink:
copy_current_readlink ();
break;
case CK_CopyOthertReadlink:
case CK_CopyOtherReadlink:
copy_other_readlink ();
break;
case CK_ChmodCmd:
@ -1300,6 +1303,9 @@ midnight_execute_cmd(int command)
jobs_cmd ();
break;
#endif
case CK_ToggleShowHidden:
toggle_show_hidden ();
break;
case CK_StartExtMap1:
ctl_x_cmd ();
break;

View File

@ -152,12 +152,31 @@ key_code_name_t key_name_conv_tab[] = {
{(int) '+', "plus", N_("Plus")},
{(int) '-', "minus", N_("Minus")},
{(int) '*', "asterisk", N_("Asterisk")},
{(int) '.', "dot", N_("Dot")},
{(int) '<', "lt", N_("Less than")},
{(int) '>', "gt", N_("Great than")},
{(int) '=', "equal", N_("Equal")},
{(int) ',', "comma", N_("Comma")},
{(int) '\'', "apostrophe", N_("Apostrophe")},
{(int) ':', "colon", N_("Colon")},
{(int) '!', "exclamation", N_("Exclamation mark")},
{(int) '?', "question", N_("Question mark")},
{(int) '&', "ampersand", N_("Ampersand")},
{(int) '$', "dollar", N_("Dollar sign")},
{(int) '"', "quota", N_("Quotation mark")},
{(int) '^', "caret", N_("Caret")},
{(int) '~', "tilda", N_("Tilda")},
{(int) '`', "prime", N_("Prime")},
{(int) '_', "underline", N_("Underline")},
{(int) '_', "understrike", N_("Understrike")},
{(int) '|', "pipe", N_("Pipe")},
{(int) '\n', "enter", N_("Enter")},
{(int) '\t', "tab", N_("Tab key")},
{(int) ' ', "space", N_("Space key")},
{(int) '/', "slash", N_("Slash key")},
{(int) '\\', "backslash", N_("Backslash key")},
{(int) '#', "number", N_("Number sign #")},
{(int) '#', "hash", N_("Number sign #")},
/* meta keys */
{KEY_M_CTRL, "control", N_("Ctrl")},