56 lines
1.6 KiB
Diff
56 lines
1.6 KiB
Diff
|
http://www.midnight-commander.org/ticket/287
|
||
|
Index: mc-4.6.2/src/key.c
|
||
|
===================================================================
|
||
|
--- mc-4.6.2.orig/src/key.c 2009-02-01 19:30:21.000000000 +0000
|
||
|
+++ mc-4.6.2/src/key.c 2009-02-25 20:16:46.000000000 +0000
|
||
|
@@ -694,6 +694,8 @@
|
||
|
/* F0 is the same as F10 for out purposes */
|
||
|
if (c == KEY_F (0))
|
||
|
c = KEY_F (10);
|
||
|
+ if (c == KEY_F_IMMUTABLE (0))
|
||
|
+ c = KEY_F_IMMUTABLE (10);
|
||
|
|
||
|
/*
|
||
|
* We are not interested if Ctrl was pressed when entering control
|
||
|
@@ -765,6 +767,16 @@
|
||
|
mod &= ~KEY_M_SHIFT;
|
||
|
}
|
||
|
|
||
|
+ /*
|
||
|
+ * Numerals may require modifilers with some keymaps or on obscure
|
||
|
+ * keyboards (e. g. F4 = Esc Shift+4). We have to ignore all
|
||
|
+ * modifiers while interpreting Esc + Numeral.
|
||
|
+ */
|
||
|
+ if (c >= KEY_F_IMMUTABLE (1) && c <= KEY_F_IMMUTABLE (10)) {
|
||
|
+ c += KEY_F (0) - KEY_F_IMMUTABLE (0);
|
||
|
+ mod &= ~KEY_M_MASK;
|
||
|
+ }
|
||
|
+
|
||
|
if (!alternate_plus_minus)
|
||
|
switch (c) {
|
||
|
case KEY_KP_ADD:
|
||
|
@@ -917,10 +929,9 @@
|
||
|
this = this->next;
|
||
|
else {
|
||
|
if (parent != NULL && parent->action == MCKEY_ESCAPE) {
|
||
|
-
|
||
|
/* Convert escape-digits to F-keys */
|
||
|
if (isdigit(c))
|
||
|
- c = KEY_F (c - '0');
|
||
|
+ c = KEY_F_IMMUTABLE (c - '0');
|
||
|
else if (c == ' ')
|
||
|
c = ESC_CHAR;
|
||
|
else
|
||
|
Index: mc-4.6.2/src/myslang.h
|
||
|
===================================================================
|
||
|
--- mc-4.6.2.orig/src/myslang.h 2009-02-25 18:25:29.000000000 +0000
|
||
|
+++ mc-4.6.2/src/myslang.h 2009-02-25 18:25:31.000000000 +0000
|
||
|
@@ -29,6 +29,7 @@
|
||
|
};
|
||
|
|
||
|
#define KEY_F(x) (1000+x)
|
||
|
+#define KEY_F_IMMUTABLE(x) (970+x)
|
||
|
|
||
|
#define ACS_VLINE SLSMG_VLINE_CHAR
|
||
|
#define ACS_HLINE SLSMG_HLINE_CHAR
|