Low-Level Keyboarding involves handling advanced keyboard shortcuts and detecting certain user actions.
A few key points:
Here are the keyboard events and the order in which they occur:
| Event | Key Parameters | Notes |
|---|---|---|
| KeyPress | KeyAscii | For ASCII characters only. This includes letters, digits, punctuation, ENTER, TAB, and BACKSPACE. |
| KeyDown | KeyCode
Shift |
Events that KeyPress cannot handle:
|
| KeyUp |
You can determine what combination of SHIFT, CTRL, and ALT was pressed for a given key event using the following code (note that it will work for mouse events too):
Private Sub Text1_KeyDown(KeyCode As Integer, _
Shift As Integer)
Dim iShiftKey as Integer
iShiftKey = Shift And 7
Select Case iShiftKey
Case 1 ' or vbShiftMask
Print "You pressed the SHIFT key."
Case 2 ' or vbCtrlMask
Print "You pressed the CTRL key."
Case 4 ' or vbAltMask
Print "You pressed the ALT key."
Case 3
Print "You pressed both SHIFT and CTRL."
Case 5
Print "You pressed both SHIFT and ALT."
Case 6
Print "You pressed both CTRL and ALT."
Case 7
Print "You pressed SHIFT, CTRL, and ALT."
End Select
End Sub
| Code | Char | Code | Char | Code | Char | Code | Char |
|---|---|---|---|---|---|---|---|
| 0 | ^@ | 32 | [space] | 64 | @ | 96 | ` |
| 1 | ^A | 33 | ! | 65 | A | 97 | a |
| 2 | ^B | 34 | " | 66 | B | 98 | b |
| 3 | ^C | 35 | # | 67 | C | 99 | c |
| 4 | ^D | 36 | $ | 68 | D | 100 | d |
| 5 | ^E | 37 | % | 69 | E | 101 | e |
| 6 | ^F | 3 | & | 70 | F | 102 | f |
| 7 | ^G | 39 | ' | 71 | G | 103 | g |
| 8 | [backspace]^H* | 40 | ( | 72 | H | 104 | h |
| 9 | [horizontal tab]^I* | 41 | ) | 73 | I | 105 | i |
| 10 | [line feed]^J* | 42 | * | 74 | J | 106 | j |
| 11 | [vertical tab]^K | 43 | + | 75 | K | 107 | k |
| 12 | [new page]^L | 44 | , | 76 | L | 108 | l |
| 13 | [carriage return]^M* | 45 | - | 77 | M | 109 | m |
| 14 | ^N | 46 | . | 78 | N | 110 | n |
| 15 | ^O | 47 | / | 79 | O | 111 | o |
| 16 | ^P | 48 | 0 | 80 | P | 112 | p |
| 17 | ^Q | 49 | 1 | 81 | Q | 113 | q |
| 18 | ^R | 50 | 2 | 82 | R | 114 | r |
| 19 | ^S | 51 | 3 | 83 | S | 115 | s |
| 20 | ^T | 52 | 4 | 84 | T | 116 | t |
| 21 | ^U | 53 | 5 | 85 | U | 117 | u |
| 22 | ^V | 54 | 6 | 86 | V | 118 | v |
| 23 | ^W | 55 | 7 | 87 | W | 119 | w |
| 24 | ^X | 56 | 8 | 88 | X | 120 | x |
| 25 | ^Y | 57 | 9 | 89 | Y | 121 | y |
| 26 | ^Z | 58 | : | 90 | Z | 122 | z |
| 27 | ^[ | 59 | ; | 91 | [ | 123 | { |
| 28 | ^\ | 60 | < | 92 | \ | 124 | | |
| 29 | ^] | 61 | = | 93 | ] | 125 | } |
| 30 | ^^ | 62 | > | 94 | ^ | 126 | ~ |
| 31 | ^_ | 63 | ? | 95 | _ | 127 |
DEL |
Codes 0-31 are control characters.
* These are commonly used.
| Constant | Value | Description |
|---|---|---|
| vbKeyLButton | 1 | Left mouse button |
| vbKeyRButton | 2 | Right mouse button |
| vbKeyCancel | 3 | CANCEL key |
| vbKeyMButton | 4 | Middle mouse button |
| vbKeyBack | 8 | BACKSPACE key |
| vbKeyTab | 9 | TAB key |
| vbKeyClear | 12 | CLEAR key |
| vbKeyReturn | 13 | ENTER key |
| vbKeyShift | 16 | SHIFT key |
| vbKeyControl | 17 | CTRL key |
| vbKeyMenu | 18 | MENU key |
| vbKeyPause | 19 | PAUSE key |
| vbKeyCapital | 20 | CAPS LOCK key |
| vbKeyEscape | 27 | ESC key |
| vbKeySpace | 32 | SPACEBAR key |
| vbKeyPageUp | 33 | PAGE UP key |
| vbKeyPageDown | 34 | PAGE DOWN key |
| vbKeyEnd | 35 | END key |
| vbKeyHome | 36 | HOME key |
| vbKeyLeft | 37 | LEFT ARROW key |
| vbKeyUp | 38 | UP ARROW key |
| vbKeyRight | 39 | RIGHT ARROW key |
| vbKeyDown | 40 | DOWN ARROW key |
| vbKeySelect | 41 | SELECT key |
| vbKeyPrint | 42 | PRINT SCREEN key |
| vbKeyExecute | 43 | EXECUTE key |
| vbKeySnapshot | 44 | SNAPSHOT key |
| vbKeyInsert | 45 | INS key |
| vbKeyDelete | 46 | DEL key |
| vbKeyHelp | 47 | HELP key |
| vbKeyNumlock | 144 | NUM LOCK key |
KeyA Through KeyZ Are the Same as Their ASCII Equivalents: 'A' Through 'Z'
| Constant | Value | Description |
|---|---|---|
| vbKeyA | 65 | A key |
| vbKeyB | 66 | B key |
| vbKeyC | 67 | C key |
| vbKeyD | 68 | D key |
| vbKeyE | 69 | E key |
| vbKeyF | 70 | F key |
| vbKeyG | 71 | G key |
| vbKeyH | 72 | H key |
| vbKeyI | 73 | I key |
| vbKeyJ | 74 | J key |
| vbKeyK | 75 | K key |
| vbKeyL | 76 | L key |
| vbKeyM | 77 | M key |
| vbKeyN | 78 | N key |
| vbKeyO | 79 | O key |
| vbKeyP | 80 | P key |
| vbKeyQ | 81 | Q key |
| vbKeyR | 82 | R key |
| vbKeyS | 83 | S key |
| vbKeyT | 84 | T key |
| vbKeyU | 85 | U key |
| vbKeyV | 86 | V key |
| vbKeyW | 87 | W key |
| vbKeyX | 88 | X key |
| vbKeyY | 89 | Y key |
| vbKeyZ | 90 | Z key |
Key0 Through Key9 Are the Same as Their ASCII Equivalents: '0' Through '9
| Constant | Value | Description |
|---|---|---|
| vbKey0 | 48 | 0 key |
| vbKey1 | 49 | 1 key |
| vbKey2 | 50 | 2 key |
| vbKey3 | 51 | 3 key |
| vbKey4 | 52 | 4 key |
| vbKey5 | 53 | 5 key |
| vbKey6 | 54 | 6 key |
| vbKey7 | 55 | 7 key |
| vbKey8 | 56 | 8 key |
| vbKey9 | 57 | 9 key |
| Constant | Value | Description |
|---|---|---|
| vbKeyNumpad0 | 96 | 0 key |
| vbKeyNumpad1 | 97 | 1 key |
| vbKeyNumpad2 | 98 | 2 key |
| vbKeyNumpad3 | 99 | 3 key |
| vbKeyNumpad4 | 100 | 4 key |
| vbKeyNumpad5 | 101 | 5 key |
| vbKeyNumpad6 | 102 | 6 key |
| vbKeyNumpad7 | 103 | 7 key |
| vbKeyNumpad8 | 104 | 8 key |
| vbKeyNumpad9 | 105 | 9 key |
| vbKeyMultiply | 106 | MULTIPLICATION SIGN (*) key |
| vbKeyAdd | 107 | PLUS SIGN (+) key |
| vbKeySeparator | 108 | ENTER (keypad) key |
| vbKeySubtract | 109 | MINUS SIGN (-) key |
| vbKeyDecimal | 110 | DECIMAL POINT(.) key |
| vbKeyDivide | 111 | DIVISION SIGN (/) key |
| Constant | Value | Description |
|---|---|---|
| vbKeyF1 | 112 | F1 key |
| vbKeyF2 | 113 | F2 key |
| vbKeyF3 | 114 | F3 key |
| vbKeyF4 | 115 | F4 key |
| vbKeyF5 | 116 | F5 key |
| vbKeyF6 | 117 | F6 key |
| vbKeyF7 | 118 | F7 key |
| vbKeyF8 | 119 | F8 key |
| vbKeyF9 | 120 | F9 key |
| vbKeyF10 | 121 | F10 key |
| vbKeyF11 | 122 | F11 key |
| vbKeyF12 | 123 | F12 key |
| vbKeyF13 | 124 | F13 key |
| vbKeyF14 | 125 | F14 key |
| vbKeyF15 | 126 | F15 key |
| vbKeyF16 | 127 | F16 key |
Page Modified: (Hand noted: 2007-10-03 18:30:56Z) (Auto noted: 2007-11-17 06:36:19Z)