Mega Code Archive

 
Categories / Delphi / Examples
 

Virtkeycodes3

To: Jarle Aasland <Delphi@Kyler.com> Subject: Virtual KeyCodes From: Richard Ebbs <richebbs@nildram.co.uk> Hi Jarle -in response to your query: VIRTUAL KEY CODES. The following table shows the symbolic constant names, hexadecimal values, and keyboard equivalents for the virtual-key codes used by the Microsoft Windows operating system. The codes are listed in numeric order. Symbolic constant name Value (hexadecimal) Mouse or keyboard equivalent VK_LBUTTON 01 Left mouse button VK_RBUTTON 02 Right mouse button VK_CANCEL 03 Control-break processing VK_MBUTTON 04 Middle mouse button (three-button mouse) ¾ 05-07 Undefined VK_BACK 08 BACKSPACE key VK_TAB 09 TAB key ¾ 0A-0B Undefined VK_CLEAR 0C CLEAR key VK_RETURN 0D ENTER key ¾ 0E-0F Undefined VK_SHIFT 10 SHIFT key VK_CONTROL 11 CTRL key VK_MENU 12 ALT key VK_PAUSE 13 PAUSE key VK_CAPITAL 14 CAPS LOCK key ¾ 15-19 Reserved for Kanji systems ¾ 1A Undefined VK_ESCAPE 1B ESC key ¾ 1C-1F Reserved for Kanji systems VK_SPACE 20 SPACEBAR VK_PRIOR 21 PAGE UP key VK_NEXT 22 PAGE DOWN key VK_END 23 END key VK_HOME 24 HOME key VK_LEFT 25 LEFT ARROW key VK_UP 26 UP ARROW key VK_RIGHT 27 RIGHT ARROW key VK_DOWN 28 DOWN ARROW key VK_SELECT 29 SELECT key ¾ 2A Original equipment manufacturer (OEM) specific VK_EXECUTE 2B EXECUTE key VK_SNAPSHOT 2C PRINT SCREEN key for Windows 3.0 and later VK_INSERT 2D INS key VK_DELETE 2E DEL key VK_HELP 2F HELP key VK_0 30 0 key VK_1 31 1 key VK_2 32 2 key VK_3 33 3 key VK_4 34 4 key VK_5 35 5 key VK_6 36 6 key VK_7 37 7 key VK_8 38 8 key VK_9 39 9 key ¾ 3A-40 Undefined VK_A 41 A key VK_B 42 B key VK_C 43 C key VK_D 44 D key VK_E 45 E key VK_F 46 F key VK_G 47 G key VK_H 48 H key VK_I 49 I key VK_J 4A J key VK_K 4B K key VK_L 4C L key VK_M 4D M key VK_N 4E N key VK_O 4F O key VK_P 50 P key VK_Q 51 Q key VK_R 52 R key VK_S 53 S key VK_T 54 T key VK_U 55 U key VK_V 56 V key VK_W 57 W key VK_X 58 X key VK_Y 59 Y key VK_Z 5A Z key ¾ 5B-5F Undefined VK_NUMPAD0 60 Numeric keypad 0 key VK_NUMPAD1 61 Numeric keypad 1 key VK_NUMPAD2 62 Numeric keypad 2 key VK_NUMPAD3 63 Numeric keypad 3 key VK_NUMPAD4 64 Numeric keypad 4 key VK_NUMPAD5 65 Numeric keypad 5 key VK_NUMPAD6 66 Numeric keypad 6 key VK_NUMPAD7 67 Numeric keypad 7 key VK_NUMPAD8 68 Numeric keypad 8 key VK_NUMPAD9 69 Numeric keypad 9 key VK_MULTIPLY 6A Multiply key VK_ADD 6B Add key VK_SEPARATOR 6C Separator key VK_SUBTRACT 6D Subtract key VK_DECIMAL 6E Decimal key VK_DIVIDE 6F Divide key VK_F1 70 F1 key VK_F2 71 F2 key VK_F3 72 F3 key VK_F4 73 F4 key VK_F5 74 F5 key VK_F6 75 F6 key VK_F7 76 F7 key VK_F8 77 F8 key VK_F9 78 F9 key VK_F10 79 F10 key VK_F11 7A F11 key VK_F12 7B F12 key VK_F13 7C F13 key VK_F14 7D F14 key VK_F15 7E F15 key VK_F16 7F F16 key VK_F17 80H F17 key VK_F18 81H F18 key VK_F19 82H F19 key VK_F20 83H F20 key VK_F21 84H F21 key VK_F22 85H F22 key VK_F23 86H F23 key VK_F24 87H F24 key ¾ 88-8F Unassigned VK_NUMLOCK 90 NUM LOCK key VK_SCROLL 91 SCROLL LOCK key ¾ 92-B9 Unassigned ¾ BA-C0 OEM specific ¾ C1-DA Unassigned ¾ DB-E4 OEM specific ¾ E5 Unassigned ¾ E6 OEM specific ¾ E7-E8 Unassigned ¾ E9-F5 OEM specific ¾ F6-FE Unassigned THE ABOVE LIST IS IN THE WINDOWS HELP SYSTEM THOUGH AND DELPHI DOESN'T ALWAYS RECOGNISE THINGS (LIKE 'VK_V' FOR EXAMPLE -so, you can convert Key to a char, and you can use the value of Shift to look for Shift and Control keys etc): (sometimes you might want to use OnKeyDown, or sometimes OnKeyPress): procedure TParseForm.PreStrEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); var ch: Char; begin ch := Char(Key); if ((Shift = [ssCtrl]) and ((ch = 'V') or (ch = 'v'))) then PreStrEdit.Text := Clipboard.AsText; end; OR THIS, EVEN: procedure TParseForm.PreStrEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); var ch: Char; begin ch := Char(Key); if ((Shift = [ssCtrl]) and ((ch = 'V') or (ch = 'v'))) then PreStrEdit.Text := Clipboard.AsText; if not(Clipboard.HasFormat(CF_TEXT) = True) then Application.MessageBox('The clipboard has no text to use -see Help', ' No Text Available', mb_OK); end; Or, you can work with numeric values: vk_LButton = $01; vk_RButton = $02; vk_Cancel = $03; vk_MButton = $04; { NOT contiguous with L & RBUTTON } vk_Back = $08; vk_Tab = $09; vk_Clear = $0C; vk_Return = $0D; vk_Shift = $10; vk_Control = $11; vk_Menu = $12; vk_Pause = $13; vk_Capital = $14; vk_Escape = $1B; vk_Space = $20; vk_Prior = $21; vk_Next = $22; vk_End = $23; vk_Home = $24; vk_Left = $25; vk_Up = $26; vk_Right = $27; vk_Down = $28; vk_Select = $29; vk_Print = $2A; vk_Execute = $2B; vk_SnapShot = $2C; { vk_Copy = $2C not used by keyboards } vk_Insert = $2D; vk_Delete = $2E; vk_Help = $2F; { vk_A thru vk_Z are the same as their ASCII equivalents: 'A' thru 'Z' } { vk_0 thru vk_9 are the same as their ASCII equivalents: '0' thru '9' } vk_NumPad0 = $60; vk_NumPad1 = $61; vk_NumPad2 = $62; vk_NumPad3 = $63; vk_NumPad4 = $64; vk_NumPad5 = $65; vk_NumPad6 = $66; vk_NumPad7 = $67; vk_NumPad8 = $68; vk_NumPad9 = $69; vk_Multiply = $6A; vk_Add = $6B; vk_Separator = $6C; vk_Subtract = $6D; vk_Decimal = $6E; vk_Divide = $6F; vk_F1 = $70; vk_F2 = $71; vk_F3 = $72; vk_F4 = $73; vk_F5 = $74; vk_F6 = $75; vk_F7 = $76; vk_F8 = $77; vk_F9 = $78; vk_F10 = $79; vk_F11 = $7A; vk_F12 = $7B; vk_F13 = $7C; vk_F14 = $7D; vk_F15 = $7E; vk_F16 = $7F; vk_F17 = $80; vk_F18 = $81; vk_F19 = $82; vk_F20 = $83; vk_F21 = $84; vk_F22 = $85; vk_F23 = $86; vk_F24 = $87; vk_NumLock = $90; vk_Scroll = $91; {The list immediately above came from 'Lloyd's help file'...}