15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS "AS IS" 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_UNKNOWN 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_UNKNOWN 0 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Left mouse button 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Right mouse button 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Control-break processing 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Middle mouse button (three-button mouse) 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_XBUTTON1 (05) 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_XBUTTON2 (06) 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_BACK 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_BACK 0x08 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_TAB 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_TAB 0x09 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_CLEAR 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_CLEAR 0x0C 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_RETURN 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_RETURN 0x0D 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_SHIFT 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_SHIFT 0x10 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_CONTROL 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_CONTROL 0x11 // CTRL key 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_MENU 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MENU 0x12 // ALT key 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_PAUSE 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_PAUSE 0x13 // PAUSE key 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_CAPITAL 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_CAPITAL 0x14 // CAPS LOCK key 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_KANA 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_KANA 0x15 // Input Method Editor (IME) Kana mode 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_HANGUL 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_HANGUL 0x15 // IME Hangul mode 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_JUNJA 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_JUNJA 0x17 // IME Junja mode 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_FINAL 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_FINAL 0x18 // IME final mode 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_HANJA 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_HANJA 0x19 // IME Hanja mode 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_KANJI 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_KANJI 0x19 // IME Kanji mode 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_ESCAPE 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_ESCAPE 0x1B // ESC key 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_CONVERT 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_CONVERT 0x1C // IME convert 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_NONCONVERT 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NONCONVERT 0x1D // IME nonconvert 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_ACCEPT 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_ACCEPT 0x1E // IME accept 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_MODECHANGE 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MODECHANGE 0x1F // IME mode change request 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_SPACE 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_SPACE 0x20 // SPACE key 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_PRIOR 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_PRIOR 0x21 // PAGE UP key 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_NEXT 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NEXT 0x22 // PAGE DOWN key 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_END 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_END 0x23 // END key 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_HOME 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_HOME 0x24 // HOME key 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_LEFT 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_LEFT 0x25 // LEFT ARROW key 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_UP 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_UP 0x26 // UP ARROW key 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_RIGHT 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_RIGHT 0x27 // RIGHT ARROW key 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_DOWN 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_DOWN 0x28 // DOWN ARROW key 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_SELECT 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_SELECT 0x29 // SELECT key 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_PRINT 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_PRINT 0x2A // PRINT key 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_EXECUTE 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_EXECUTE 0x2B // EXECUTE key 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_SNAPSHOT 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_SNAPSHOT 0x2C // PRINT SCREEN key 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_INSERT 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_INSERT 0x2D // INS key 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_DELETE 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_DELETE 0x2E // DEL key 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef VK_HELP 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_HELP 0x2F // HELP key 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_0 0x30 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_1 0x31 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_2 0x32 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_3 0x33 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_4 0x34 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_5 0x35 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_6 0x36 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_7 0x37 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_8 0x38 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_9 0x39 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_A 0x41 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_B 0x42 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_C 0x43 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_D 0x44 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_E 0x45 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F 0x46 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_G 0x47 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_H 0x48 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_I 0x49 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_J 0x4A 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_K 0x4B 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_L 0x4C 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_M 0x4D 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_N 0x4E 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_O 0x4F 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_P 0x50 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_Q 0x51 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_R 0x52 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_S 0x53 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_T 0x54 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_U 0x55 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_V 0x56 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_W 0x57 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_X 0x58 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_Y 0x59 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_Z 0x5A 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_LWIN 0x5B // Left Windows key (Microsoft Natural keyboard) 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_RWIN 0x5C // Right Windows key (Natural keyboard) 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_APPS 0x5D // Applications key (Natural keyboard) 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_SLEEP 0x5F // Computer Sleep key 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Num pad keys 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD0 0x60 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD1 0x61 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD2 0x62 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD3 0x63 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD4 0x64 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD5 0x65 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD6 0x66 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD7 0x67 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD8 0x68 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMPAD9 0x69 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MULTIPLY 0x6A 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_ADD 0x6B 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_SEPARATOR 0x6C 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_SUBTRACT 0x6D 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_DECIMAL 0x6E 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_DIVIDE 0x6F 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F1 0x70 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F2 0x71 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F3 0x72 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F4 0x73 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F5 0x74 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F6 0x75 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F7 0x76 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F8 0x77 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F9 0x78 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F10 0x79 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F11 0x7A 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F12 0x7B 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F13 0x7C 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F14 0x7D 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F15 0x7E 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F16 0x7F 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F17 0x80 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F18 0x81 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F19 0x82 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F20 0x83 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F21 0x84 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F22 0x85 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F23 0x86 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_F24 0x87 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NUMLOCK 0x90 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_SCROLL 0x91 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_LSHIFT 0xA0 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_RSHIFT 0xA1 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_LCONTROL 0xA2 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_RCONTROL 0xA3 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_LMENU 0xA4 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_RMENU 0xA5 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_BROWSER_BACK 0xA6 // Windows 2000/XP: Browser Back key 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_BROWSER_FORWARD 0xA7 // Windows 2000/XP: Browser Forward key 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_BROWSER_REFRESH 0xA8 // Windows 2000/XP: Browser Refresh key 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_BROWSER_STOP 0xA9 // Windows 2000/XP: Browser Stop key 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_BROWSER_SEARCH 0xAA // Windows 2000/XP: Browser Search key 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_BROWSER_FAVORITES 0xAB // Windows 2000/XP: Browser Favorites key 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_BROWSER_HOME 0xAC // Windows 2000/XP: Browser Start and Home key 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_VOLUME_MUTE 0xAD // Windows 2000/XP: Volume Mute key 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_VOLUME_DOWN 0xAE // Windows 2000/XP: Volume Down key 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_VOLUME_UP 0xAF // Windows 2000/XP: Volume Up key 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MEDIA_NEXT_TRACK 0xB0 // Windows 2000/XP: Next Track key 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MEDIA_PREV_TRACK 0xB1 // Windows 2000/XP: Previous Track key 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MEDIA_STOP 0xB2 // Windows 2000/XP: Stop Media key 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MEDIA_PLAY_PAUSE 0xB3 // Windows 2000/XP: Play/Pause Media key 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MEDIA_LAUNCH_MAIL 0xB4 // Windows 2000/XP: Start Mail key 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MEDIA_LAUNCH_MEDIA_SELECT 0xB5 // Windows 2000/XP: Select Media key 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MEDIA_LAUNCH_APP1 0xB6 // VK_LAUNCH_APP1 (B6) Windows 2000/XP: Start Application 1 key 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_MEDIA_LAUNCH_APP2 0xB7 // VK_LAUNCH_APP2 (B7) Windows 2000/XP: Start Application 2 key 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_OEM_1 (BA) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ';:' key 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_1 0xBA 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Windows 2000/XP: For any country/region, the '+' key 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_PLUS 0xBB 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Windows 2000/XP: For any country/region, the ',' key 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_COMMA 0xBC 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Windows 2000/XP: For any country/region, the '-' key 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_MINUS 0xBD 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Windows 2000/XP: For any country/region, the '.' key 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_PERIOD 0xBE 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_OEM_2 (BF) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '/?' key 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_2 0xBF 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_OEM_3 (C0) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '`~' key 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_3 0xC0 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_OEM_4 (DB) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '[{' key 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_4 0xDB 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_OEM_5 (DC) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '\|' key 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_5 0xDC 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_OEM_6 (DD) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ']}' key 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_6 0xDD 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_OEM_7 (DE) Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_7 0xDE 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_OEM_8 (DF) Used for miscellaneous characters; it can vary by keyboard. 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_8 0xDF 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// VK_OEM_102 (E2) Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_102 0xE2 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_PROCESSKEY 0xE5 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT,SendInput, WM_KEYDOWN, and WM_KEYUP 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_PACKET 0xE7 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_ATTN 0xF6 // Attn key 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_CRSEL 0xF7 // CrSel key 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_EXSEL 0xF8 // ExSel key 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_EREOF 0xF9 // Erase EOF key 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_PLAY 0xFA // Play key 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_ZOOM 0xFB // Zoom key 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_NONAME 0xFC // Reserved for future use 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_PA1 0xFD // VK_PA1 (FD) PA1 key 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define VK_OEM_CLEAR 0xFE // Clear key 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // VK_UNKNOWN 321