summaryrefslogtreecommitdiffstats
path: root/src/getchar.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2005-03-25 21:45:43 +0000
committerBram Moolenaar <Bram@vim.org>2005-03-25 21:45:43 +0000
commita88d968da127052294354dc1e7d6ce30610e66ff (patch)
tree8255385906e5c19629f8540568f44de8083624e1 /src/getchar.c
parent43b604cddcd655225cde7696a54b429746cb8876 (diff)
updated for version 7.0064
Diffstat (limited to 'src/getchar.c')
-rw-r--r--src/getchar.c82
1 files changed, 57 insertions, 25 deletions
diff --git a/src/getchar.c b/src/getchar.c
index 8fb1dd9b8a..dea8c4919e 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1545,35 +1545,67 @@ vgetc()
(void)vgetorpeek(TRUE);
#endif
- if (c >= FIRST_KEYPAD && c <= LAST_KEYPAD)
+ /* a keypad or special function key was not mapped, use it like
+ * its ASCII equivalent */
+ switch (c)
{
- /* a keypad key was not mapped, use it like its ASCII equivalent */
- switch (c)
- {
- case K_KPLUS: c = '+'; break;
- case K_KMINUS: c = '-'; break;
- case K_KDIVIDE: c = '/'; break;
- case K_KMULTIPLY: c = '*'; break;
- case K_KENTER: c = CAR; break;
- case K_KPOINT:
+ case K_KPLUS: c = '+'; break;
+ case K_KMINUS: c = '-'; break;
+ case K_KDIVIDE: c = '/'; break;
+ case K_KMULTIPLY: c = '*'; break;
+ case K_KENTER: c = CAR; break;
+ case K_KPOINT:
#ifdef WIN32
- /* Can be either '.' or a ',', *
- * depending on the type of keypad. */
- c = MapVirtualKey(VK_DECIMAL, 2); break;
+ /* Can be either '.' or a ',', *
+ * depending on the type of keypad. */
+ c = MapVirtualKey(VK_DECIMAL, 2); break;
#else
- c = '.'; break;
+ c = '.'; break;
#endif
- case K_K0: c = '0'; break;
- case K_K1: c = '1'; break;
- case K_K2: c = '2'; break;
- case K_K3: c = '3'; break;
- case K_K4: c = '4'; break;
- case K_K5: c = '5'; break;
- case K_K6: c = '6'; break;
- case K_K7: c = '7'; break;
- case K_K8: c = '8'; break;
- case K_K9: c = '9'; break;
- }
+ case K_K0: c = '0'; break;
+ case K_K1: c = '1'; break;
+ case K_K2: c = '2'; break;
+ case K_K3: c = '3'; break;
+ case K_K4: c = '4'; break;
+ case K_K5: c = '5'; break;
+ case K_K6: c = '6'; break;
+ case K_K7: c = '7'; break;
+ case K_K8: c = '8'; break;
+ case K_K9: c = '9'; break;
+
+ case K_XHOME:
+ case K_ZHOME: if (mod_mask == MOD_MASK_SHIFT)
+ {
+ c = K_S_HOME;
+ mod_mask = 0;
+ }
+ else if (mod_mask == MOD_MASK_CTRL)
+ {
+ c = K_C_HOME;
+ mod_mask = 0;
+ }
+ else
+ c = K_HOME;
+ break;
+ case K_XEND:
+ case K_ZEND: if (mod_mask == MOD_MASK_SHIFT)
+ {
+ c = K_S_END;
+ mod_mask = 0;
+ }
+ else if (mod_mask == MOD_MASK_CTRL)
+ {
+ c = K_C_END;
+ mod_mask = 0;
+ }
+ else
+ c = K_END;
+ break;
+
+ case K_XUP: c = K_UP; break;
+ case K_XDOWN: c = K_DOWN; break;
+ case K_XLEFT: c = K_LEFT; break;
+ case K_XRIGHT: c = K_RIGHT; break;
}
#ifdef FEAT_MBYTE