|
|
@@ -275,6 +275,79 @@ static int win32_get_event(caca_display_t *dp, caca_privevent_t *ev) |
|
|
|
ev->data.key.utf8[0] = ev->data.key.ch; |
|
|
|
ev->data.key.utf8[1] = '\0'; |
|
|
|
|
|
|
|
return 1; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
switch (rec.Event.KeyEvent.wVirtualKeyCode) |
|
|
|
{ |
|
|
|
case VK_TAB: ev->data.key.ch = '\t'; break; |
|
|
|
case VK_RETURN: ev->data.key.ch = '\r'; break; |
|
|
|
case VK_ESCAPE: ev->data.key.ch = '\x1b'; break; |
|
|
|
case VK_SPACE: ev->data.key.ch = ' '; break; |
|
|
|
case VK_DELETE: ev->data.key.ch = '\x7f'; break; |
|
|
|
|
|
|
|
case VK_LEFT: ev->data.key.ch = CACA_KEY_LEFT; break; |
|
|
|
case VK_RIGHT: ev->data.key.ch = CACA_KEY_RIGHT; break; |
|
|
|
case VK_UP: ev->data.key.ch = CACA_KEY_UP; break; |
|
|
|
case VK_DOWN: ev->data.key.ch = CACA_KEY_DOWN; break; |
|
|
|
|
|
|
|
case VK_INSERT: ev->data.key.ch = CACA_KEY_INSERT; break; |
|
|
|
case VK_HOME: ev->data.key.ch = CACA_KEY_HOME; break; |
|
|
|
case VK_END: ev->data.key.ch = CACA_KEY_END; break; |
|
|
|
case VK_PRIOR: ev->data.key.ch = CACA_KEY_PAGEUP; break; |
|
|
|
case VK_NEXT: ev->data.key.ch = CACA_KEY_PAGEDOWN; break; |
|
|
|
|
|
|
|
case VK_F1: ev->data.key.ch = CACA_KEY_F1; break; |
|
|
|
case VK_F2: ev->data.key.ch = CACA_KEY_F2; break; |
|
|
|
case VK_F3: ev->data.key.ch = CACA_KEY_F3; break; |
|
|
|
case VK_F4: ev->data.key.ch = CACA_KEY_F4; break; |
|
|
|
case VK_F5: ev->data.key.ch = CACA_KEY_F5; break; |
|
|
|
case VK_F6: ev->data.key.ch = CACA_KEY_F6; break; |
|
|
|
case VK_F7: ev->data.key.ch = CACA_KEY_F7; break; |
|
|
|
case VK_F8: ev->data.key.ch = CACA_KEY_F8; break; |
|
|
|
case VK_F9: ev->data.key.ch = CACA_KEY_F9; break; |
|
|
|
case VK_F10: ev->data.key.ch = CACA_KEY_F10; break; |
|
|
|
case VK_F11: ev->data.key.ch = CACA_KEY_F11; break; |
|
|
|
case VK_F12: ev->data.key.ch = CACA_KEY_F12; break; |
|
|
|
case VK_F13: ev->data.key.ch = CACA_KEY_F13; break; |
|
|
|
case VK_F14: ev->data.key.ch = CACA_KEY_F14; break; |
|
|
|
case VK_F15: ev->data.key.ch = CACA_KEY_F15; break; |
|
|
|
|
|
|
|
case VK_NUMPAD0: ev->data.key.ch = '0'; break; |
|
|
|
case VK_NUMPAD1: ev->data.key.ch = '1'; break; |
|
|
|
case VK_NUMPAD2: ev->data.key.ch = '2'; break; |
|
|
|
case VK_NUMPAD3: ev->data.key.ch = '3'; break; |
|
|
|
case VK_NUMPAD4: ev->data.key.ch = '4'; break; |
|
|
|
case VK_NUMPAD5: ev->data.key.ch = '5'; break; |
|
|
|
case VK_NUMPAD6: ev->data.key.ch = '6'; break; |
|
|
|
case VK_NUMPAD7: ev->data.key.ch = '7'; break; |
|
|
|
case VK_NUMPAD8: ev->data.key.ch = '8'; break; |
|
|
|
case VK_NUMPAD9: ev->data.key.ch = '9'; break; |
|
|
|
case VK_MULTIPLY: ev->data.key.ch = '*'; break; |
|
|
|
case VK_ADD: ev->data.key.ch = '+'; break; |
|
|
|
case VK_SEPARATOR: ev->data.key.ch = ','; break; |
|
|
|
case VK_SUBTRACT: ev->data.key.ch = '-'; break; |
|
|
|
case VK_DECIMAL: ev->data.key.ch = '.'; break; |
|
|
|
case VK_DIVIDE: ev->data.key.ch = '/'; break; |
|
|
|
|
|
|
|
default: ev->type = CACA_EVENT_NONE; return 0; |
|
|
|
} |
|
|
|
|
|
|
|
if ((ev->data.key.ch > 0) |
|
|
|
&& |
|
|
|
(ev->data.key.ch <= 0x7f)) |
|
|
|
{ |
|
|
|
ev->data.key.utf32 = (uint32_t)ev->data.key.ch; |
|
|
|
ev->data.key.utf8[0] = ev->data.key.ch; |
|
|
|
ev->data.key.utf8[1] = '\0'; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
ev->data.key.utf32 = 0; |
|
|
|
ev->data.key.utf8[0] = '\0'; |
|
|
|
} |
|
|
|
|
|
|
|
return 1; |
|
|
|
} |
|
|
|
} |
|
|
|