Ignore:
Timestamp:
Oct 31, 2008, 7:39:16 PM (11 years ago)
Author:
bsittler
Message:

now arrow keys, function keys, etc. work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/driver/win32.c

    r2962 r3167  
    278278                return 1;
    279279            }
     280            else
     281            {
     282                switch (rec.Event.KeyEvent.wVirtualKeyCode)
     283                {
     284                case VK_TAB:        ev->data.key.ch = '\t';              break;
     285                case VK_RETURN:     ev->data.key.ch = '\r';              break;
     286                case VK_ESCAPE:     ev->data.key.ch = '\x1b';            break;
     287                case VK_SPACE:      ev->data.key.ch = ' ';               break;
     288                case VK_DELETE:     ev->data.key.ch = '\x7f';            break;
     289
     290                case VK_LEFT:       ev->data.key.ch = CACA_KEY_LEFT;     break;
     291                case VK_RIGHT:      ev->data.key.ch = CACA_KEY_RIGHT;    break;
     292                case VK_UP:         ev->data.key.ch = CACA_KEY_UP;       break;
     293                case VK_DOWN:       ev->data.key.ch = CACA_KEY_DOWN;     break;
     294
     295                case VK_INSERT:     ev->data.key.ch = CACA_KEY_INSERT;   break;
     296                case VK_HOME:       ev->data.key.ch = CACA_KEY_HOME;     break;
     297                case VK_END:        ev->data.key.ch = CACA_KEY_END;      break;
     298                case VK_PRIOR:      ev->data.key.ch = CACA_KEY_PAGEUP;   break;
     299                case VK_NEXT:       ev->data.key.ch = CACA_KEY_PAGEDOWN; break;
     300
     301                case VK_F1:         ev->data.key.ch = CACA_KEY_F1;       break;
     302                case VK_F2:         ev->data.key.ch = CACA_KEY_F2;       break;
     303                case VK_F3:         ev->data.key.ch = CACA_KEY_F3;       break;
     304                case VK_F4:         ev->data.key.ch = CACA_KEY_F4;       break;
     305                case VK_F5:         ev->data.key.ch = CACA_KEY_F5;       break;
     306                case VK_F6:         ev->data.key.ch = CACA_KEY_F6;       break;
     307                case VK_F7:         ev->data.key.ch = CACA_KEY_F7;       break;
     308                case VK_F8:         ev->data.key.ch = CACA_KEY_F8;       break;
     309                case VK_F9:         ev->data.key.ch = CACA_KEY_F9;       break;
     310                case VK_F10:        ev->data.key.ch = CACA_KEY_F10;      break;
     311                case VK_F11:        ev->data.key.ch = CACA_KEY_F11;      break;
     312                case VK_F12:        ev->data.key.ch = CACA_KEY_F12;      break;
     313                case VK_F13:        ev->data.key.ch = CACA_KEY_F13;      break;
     314                case VK_F14:        ev->data.key.ch = CACA_KEY_F14;      break;
     315                case VK_F15:        ev->data.key.ch = CACA_KEY_F15;      break;
     316
     317                case VK_NUMPAD0:    ev->data.key.ch = '0';               break;
     318                case VK_NUMPAD1:    ev->data.key.ch = '1';               break;
     319                case VK_NUMPAD2:    ev->data.key.ch = '2';               break;
     320                case VK_NUMPAD3:    ev->data.key.ch = '3';               break;
     321                case VK_NUMPAD4:    ev->data.key.ch = '4';               break;
     322                case VK_NUMPAD5:    ev->data.key.ch = '5';               break;
     323                case VK_NUMPAD6:    ev->data.key.ch = '6';               break;
     324                case VK_NUMPAD7:    ev->data.key.ch = '7';               break;
     325                case VK_NUMPAD8:    ev->data.key.ch = '8';               break;
     326                case VK_NUMPAD9:    ev->data.key.ch = '9';               break;
     327                case VK_MULTIPLY:   ev->data.key.ch = '*';               break;
     328                case VK_ADD:        ev->data.key.ch = '+';               break;
     329                case VK_SEPARATOR:  ev->data.key.ch = ',';               break;
     330                case VK_SUBTRACT:   ev->data.key.ch = '-';               break;
     331                case VK_DECIMAL:    ev->data.key.ch = '.';               break;
     332                case VK_DIVIDE:     ev->data.key.ch = '/';               break;
     333
     334                default: ev->type = CACA_EVENT_NONE; return 0;
     335                }
     336
     337                if ((ev->data.key.ch > 0)
     338                    &&
     339                    (ev->data.key.ch <= 0x7f))
     340                {
     341                    ev->data.key.utf32 = (uint32_t)ev->data.key.ch;
     342                    ev->data.key.utf8[0] = ev->data.key.ch;
     343                    ev->data.key.utf8[1] = '\0';
     344                }
     345                else
     346                {
     347                    ev->data.key.utf32 = 0;
     348                    ev->data.key.utf8[0] = '\0';
     349                }
     350
     351                return 1;
     352            }
    280353        }
    281354
Note: See TracChangeset for help on using the changeset viewer.