Виртуальный код клавиши
Виртуальный код нажатой клавиши имеет 16 разрядов и передается в битах 16 - 31 параметра mp2. Для обычных символьных клавиш виртуальных код равен нулю. Функциональные клавиши и клавиши серого цвета имеют виртуальные коды, приведенные ниже:
| Клавиша | Виртуальный код | Значение виртуального кода |
| Левая клавиша мыши | VK_BUTTON1 | 0x01 |
| Правая клавиша мыши | VK_BUTTON2 | 0x02 |
| Средняя клавиша мыши | VK_BUTTON3 | 0x03 |
| <Break> | VK_BREAK | 0x04 |
| Забой | VK_BACKSPACE | 0x05 |
| Табуляция <Tab> | VK_TAB | 0x06 |
| Обратная табуляция | VK_BACKTAB | 0x07 |
| Переход на новую строку, клавиша <Enter> основной клавиатуры | VK_NEWLINE | 0x08 |
| Левая или правая клавиша сдвига <Shift> | VK_SHIFT | 0x09 |
| Левая или правая клавиша <Control> | VK_CTRL | 0x0A |
| Левая клавиша <Alt> | VK_ALT | 0x0B |
| Правая клавиша <Alt> | VK_ALTGRAF | 0x0C |
| <Pause> | VK_PAUSE | 0x0D |
| <Caps Lock> | VK_CAPSLOCK | 0x0E |
| <Esc> | VK_ESC | 0x0F |
| Пробел | VK_SPACE | 0x10 |
| Переход на следующую страницу <PgUp> | VK_PAGEUP | 0x11 |
| Переход на предыдущую страницу <PgUp> | VK_PAGEDOWN | 0x12 |
| <End> | VK_END | 0x13 |
| <Home> | VK_HOME | 0x14 |
| Перемещение курсора влево <Left> | VK_LEFT | 0x15 |
| Перемещение курсора вверх <Up> | VK_UP | 0x16 |
| Перемещение курсора вправо <Right> | VK_RIGHT | 0x17 |
| Перемещение курсора вниз <Down> | VK_DOWN | 0x18 |
| Печать экрана | VK_PRINTSCRN | 0x19 |
| Вставка <Insert> | VK_INSERT | 0x1A |
| Удаление <Delete> | VK_DELETE | 0x1B |
| <Scroll Lock> | VK_SCRLLOCK | 0x1C |
| <Num Lock> | VK_NUMLOCK | 0x1D |
| <Enter> на дополнительной (цифровой) клавиатуре | VK_ENTER | 0x1E |
| Клавиша запроса системы | VK_SYSRQ | 0x1F |
| Функциональная клавиша <F1> | V K_F1 | 0x20 |
| - // - <F2> | VK_F2 | 0x21 |
| - // - <F3> | VK_F3 | 0x22 |
| - // - <F4> | VK_F4 | 0x23 |
| - // - <F5> | VK_F5 | 0x24 |
| - // - <F6> | VK_F6 | 0x25 |
| - // - <F7> | VK_F7 | 0x26 |
| - // - <F8> | VK_F8 | 0x27 |
| - // - <F9> | VK_F9 | 0x28 |
| - // - <F10> | VK_F10 | 0x29 |
| - // - <F11> | VK_F11 | 0x2A |
| - // - <F12> | VK_F12 | 0x2B |
| - // - <F13> | VK_F13 | 0x2C |
| - // - <F14> | VK_F14 | 0x2D |
| - // - <F15> | VK_F15 | 0x2E |
| - // - <F16> | VK_F16 | 0x2F |
| - // - <F17> | VK_F17 | 0x30 |
| - // - <F18> | VK_F18 | 0x31 |
| - // - <F19> | VK_F19 | 0x32 |
| - // - <F20> | VK_F20 | 0x33 |
| - // - <F21> | VK_F21 | 0x34 |
| - // - <F22> | VK_F22 | 0x35 |
| - // - <F23> | VK_F23 | 0x36 |
| - // - <F24> | VK_F24 | 0x37 |
| Завершение перемещения | VK_ENDDRAG | 0x38 |
| Вызов меню | VK_MENU | VK_F10 |
Заметьте, что в приведенном выше списке есть коды клавиш, которые отсутствуют на стандартной клавиатуре компьютера, совместимого с IBM PC. В этом нет ничего удивительного, так как в механизм виртуальных кодов клавиш заложена возможность работы и на других платформах.
Виртуальный код клавиши можно получить из параметра mp2 при помощи макрокоманды SHORT2FROMMP :
nVirt = SHORT2FROMMP (mp2);