- int mapped_punct = 0;
-
- /* map_virt_key says its a valid key, but the uChar.AsciiChar field
- is empty. patch up the uChar.AsciiChar field using wVirtualKeyCode. */
- if (event->uChar.AsciiChar == 0
- && ((key_code >= '0' && key_code <= '9')
- || (key_code >= 'A' && key_code <= 'Z')
- || (key_code >= 0xBA && key_code <= 0xC0)
- || (key_code >= 0xDB && key_code <= 0xDE)
- )) {
- if (key_code >= '0' && key_code <= '9') {
- event->uChar.AsciiChar =
- WIN32_KEY_SHIFTED (mods, key_code,
- win32_number_shift_map[key_code - '0']);
- return;
- }
- switch (key_code) {
- case 0xBA: mapped_punct = WIN32_KEY_SHIFTED (mods, ';', ':'); break;
- case 0xBB: mapped_punct = WIN32_KEY_SHIFTED (mods, '=', '+'); break;
- case 0xBC: mapped_punct = WIN32_KEY_SHIFTED (mods, ',', '<'); break;
- case 0xBD: mapped_punct = WIN32_KEY_SHIFTED (mods, '-', '_'); break;
- case 0xBE: mapped_punct = WIN32_KEY_SHIFTED (mods, '.', '>'); break;
- case 0xBF: mapped_punct = WIN32_KEY_SHIFTED (mods, '/', '?'); break;
- case 0xC0: mapped_punct = WIN32_KEY_SHIFTED (mods, '`', '~'); break;
- case 0xDB: mapped_punct = WIN32_KEY_SHIFTED (mods, '[', '{'); break;
- case 0xDC: mapped_punct = WIN32_KEY_SHIFTED (mods, '\\', '|'); break;
- case 0xDD: mapped_punct = WIN32_KEY_SHIFTED (mods, ']', '}'); break;
- case 0xDE: mapped_punct = WIN32_KEY_SHIFTED (mods, '\'', '"'); break;
- default:
- mapped_punct = 0;
- break;