diff options
author | Bram Moolenaar <Bram@vim.org> | 2005-03-25 21:45:43 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2005-03-25 21:45:43 +0000 |
commit | a88d968da127052294354dc1e7d6ce30610e66ff (patch) | |
tree | 8255385906e5c19629f8540568f44de8083624e1 /src/getchar.c | |
parent | 43b604cddcd655225cde7696a54b429746cb8876 (diff) |
updated for version 7.0064
Diffstat (limited to 'src/getchar.c')
-rw-r--r-- | src/getchar.c | 82 |
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 |