Keys Keys Keys Keys Enum
Definition
Specifies key codes and modifiers.
This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.
public enum class Keys
[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.KeysConverter))]
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum Keys
type Keys =
Public Enum Keys
- Inheritance
- Attributes
Fields
A A A A | 65 | The A key. |
Add Add Add Add | 107 | The add key. |
Alt Alt Alt Alt | 262144 | The ALT modifier key. |
Apps Apps Apps Apps | 93 | The application key (Microsoft Natural Keyboard). |
Attn Attn Attn Attn | 246 | The ATTN key. |
B B B B | 66 | The B key. |
Back Back Back Back | 8 | The BACKSPACE key. |
BrowserBack BrowserBack BrowserBack BrowserBack | 166 | The browser back key (Windows 2000 or later). |
BrowserFavorites BrowserFavorites BrowserFavorites BrowserFavorites | 171 | The browser favorites key (Windows 2000 or later). |
BrowserForward BrowserForward BrowserForward BrowserForward | 167 | The browser forward key (Windows 2000 or later). |
BrowserHome BrowserHome BrowserHome BrowserHome | 172 | The browser home key (Windows 2000 or later). |
BrowserRefresh BrowserRefresh BrowserRefresh BrowserRefresh | 168 | The browser refresh key (Windows 2000 or later). |
BrowserSearch BrowserSearch BrowserSearch BrowserSearch | 170 | The browser search key (Windows 2000 or later). |
BrowserStop BrowserStop BrowserStop BrowserStop | 169 | The browser stop key (Windows 2000 or later). |
C C C C | 67 | The C key. |
Cancel Cancel Cancel Cancel | 3 | The CANCEL key. |
Capital Capital Capital Capital | 20 | The CAPS LOCK key. |
CapsLock CapsLock CapsLock CapsLock | 20 | The CAPS LOCK key. |
Clear Clear Clear Clear | 12 | The CLEAR key. |
Control Control Control Control | 131072 | The CTRL modifier key. |
ControlKey ControlKey ControlKey ControlKey | 17 | The CTRL key. |
Crsel Crsel Crsel Crsel | 247 | The CRSEL key. |
D D D D | 68 | The D key. |
D0 D0 D0 D0 | 48 | The 0 key. |
D1 D1 D1 D1 | 49 | The 1 key. |
D2 D2 D2 D2 | 50 | The 2 key. |
D3 D3 D3 D3 | 51 | The 3 key. |
D4 D4 D4 D4 | 52 | The 4 key. |
D5 D5 D5 D5 | 53 | The 5 key. |
D6 D6 D6 D6 | 54 | The 6 key. |
D7 D7 D7 D7 | 55 | The 7 key. |
D8 D8 D8 D8 | 56 | The 8 key. |
D9 D9 D9 D9 | 57 | The 9 key. |
Decimal Decimal Decimal Decimal | 110 | The decimal key. |
Delete Delete Delete Delete | 46 | The DEL key. |
Divide Divide Divide Divide | 111 | The divide key. |
Down Down Down Down | 40 | The DOWN ARROW key. |
E E E E | 69 | The E key. |
End End End End | 35 | The END key. |
Enter Enter Enter Enter | 13 | The ENTER key. |
EraseEof EraseEof EraseEof EraseEof | 249 | The ERASE EOF key. |
Escape Escape Escape Escape | 27 | The ESC key. |
Execute Execute Execute Execute | 43 | The EXECUTE key. |
Exsel Exsel Exsel Exsel | 248 | The EXSEL key. |
F F F F | 70 | The F key. |
F1 F1 F1 F1 | 112 | The F1 key. |
F10 F10 F10 F10 | 121 | The F10 key. |
F11 F11 F11 F11 | 122 | The F11 key. |
F12 F12 F12 F12 | 123 | The F12 key. |
F13 F13 F13 F13 | 124 | The F13 key. |
F14 F14 F14 F14 | 125 | The F14 key. |
F15 F15 F15 F15 | 126 | The F15 key. |
F16 F16 F16 F16 | 127 | The F16 key. |
F17 F17 F17 F17 | 128 | The F17 key. |
F18 F18 F18 F18 | 129 | The F18 key. |
F19 F19 F19 F19 | 130 | The F19 key. |
F2 F2 F2 F2 | 113 | The F2 key. |
F20 F20 F20 F20 | 131 | The F20 key. |
F21 F21 F21 F21 | 132 | The F21 key. |
F22 F22 F22 F22 | 133 | The F22 key. |
F23 F23 F23 F23 | 134 | The F23 key. |
F24 F24 F24 F24 | 135 | The F24 key. |
F3 F3 F3 F3 | 114 | The F3 key. |
F4 F4 F4 F4 | 115 | The F4 key. |
F5 F5 F5 F5 | 116 | The F5 key. |
F6 F6 F6 F6 | 117 | The F6 key. |
F7 F7 F7 F7 | 118 | The F7 key. |
F8 F8 F8 F8 | 119 | The F8 key. |
F9 F9 F9 F9 | 120 | The F9 key. |
FinalMode FinalMode FinalMode FinalMode | 24 | The IME final mode key. |
G G G G | 71 | The G key. |
H H H H | 72 | The H key. |
HanguelMode HanguelMode HanguelMode HanguelMode | 21 | The IME Hanguel mode key. (maintained for compatibility; use |
HangulMode HangulMode HangulMode HangulMode | 21 | The IME Hangul mode key. |
HanjaMode HanjaMode HanjaMode HanjaMode | 25 | The IME Hanja mode key. |
Help Help Help Help | 47 | The HELP key. |
Home Home Home Home | 36 | The HOME key. |
I I I I | 73 | The I key. |
IMEAccept IMEAccept IMEAccept IMEAccept | 30 | The IME accept key, replaces IMEAceept. |
IMEAceept IMEAceept IMEAceept IMEAceept | 30 | The IME accept key. Obsolete, use IMEAccept instead. |
IMEConvert IMEConvert IMEConvert IMEConvert | 28 | The IME convert key. |
IMEModeChange IMEModeChange IMEModeChange IMEModeChange | 31 | The IME mode change key. |
IMENonconvert IMENonconvert IMENonconvert IMENonconvert | 29 | The IME nonconvert key. |
Insert Insert Insert Insert | 45 | The INS key. |
J J J J | 74 | The J key. |
JunjaMode JunjaMode JunjaMode JunjaMode | 23 | The IME Junja mode key. |
K K K K | 75 | The K key. |
KanaMode KanaMode KanaMode KanaMode | 21 | The IME Kana mode key. |
KanjiMode KanjiMode KanjiMode KanjiMode | 25 | The IME Kanji mode key. |
KeyCode KeyCode KeyCode KeyCode | 65535 | The bitmask to extract a key code from a key value. |
L L L L | 76 | The L key. |
LaunchApplication1 LaunchApplication1 LaunchApplication1 LaunchApplication1 | 182 | The start application one key (Windows 2000 or later). |
LaunchApplication2 LaunchApplication2 LaunchApplication2 LaunchApplication2 | 183 | The start application two key (Windows 2000 or later). |
LaunchMail LaunchMail LaunchMail LaunchMail | 180 | The launch mail key (Windows 2000 or later). |
LButton LButton LButton LButton | 1 | The left mouse button. |
LControlKey LControlKey LControlKey LControlKey | 162 | The left CTRL key. |
Left Left Left Left | 37 | The LEFT ARROW key. |
LineFeed LineFeed LineFeed LineFeed | 10 | The LINEFEED key. |
LMenu LMenu LMenu LMenu | 164 | The left ALT key. |
LShiftKey LShiftKey LShiftKey LShiftKey | 160 | The left SHIFT key. |
LWin LWin LWin LWin | 91 | The left Windows logo key (Microsoft Natural Keyboard). |
M M M M | 77 | The M key. |
MButton MButton MButton MButton | 4 | The middle mouse button (three-button mouse). |
MediaNextTrack MediaNextTrack MediaNextTrack MediaNextTrack | 176 | The media next track key (Windows 2000 or later). |
MediaPlayPause MediaPlayPause MediaPlayPause MediaPlayPause | 179 | The media play pause key (Windows 2000 or later). |
MediaPreviousTrack MediaPreviousTrack MediaPreviousTrack MediaPreviousTrack | 177 | The media previous track key (Windows 2000 or later). |
MediaStop MediaStop MediaStop MediaStop | 178 | The media Stop key (Windows 2000 or later). |
Menu Menu Menu Menu | 18 | The ALT key. |
Modifiers Modifiers Modifiers Modifiers | -65536 | The bitmask to extract modifiers from a key value. |
Multiply Multiply Multiply Multiply | 106 | The multiply key. |
N N N N | 78 | The N key. |
Next Next Next Next | 34 | The PAGE DOWN key. |
NoName NoName NoName NoName | 252 | A constant reserved for future use. |
None None None None | 0 | No key pressed. |
NumLock NumLock NumLock NumLock | 144 | The NUM LOCK key. |
NumPad0 NumPad0 NumPad0 NumPad0 | 96 | The 0 key on the numeric keypad. |
NumPad1 NumPad1 NumPad1 NumPad1 | 97 | The 1 key on the numeric keypad. |
NumPad2 NumPad2 NumPad2 NumPad2 | 98 | The 2 key on the numeric keypad. |
NumPad3 NumPad3 NumPad3 NumPad3 | 99 | The 3 key on the numeric keypad. |
NumPad4 NumPad4 NumPad4 NumPad4 | 100 | The 4 key on the numeric keypad. |
NumPad5 NumPad5 NumPad5 NumPad5 | 101 | The 5 key on the numeric keypad. |
NumPad6 NumPad6 NumPad6 NumPad6 | 102 | The 6 key on the numeric keypad. |
NumPad7 NumPad7 NumPad7 NumPad7 | 103 | The 7 key on the numeric keypad. |
NumPad8 NumPad8 NumPad8 NumPad8 | 104 | The 8 key on the numeric keypad. |
NumPad9 NumPad9 NumPad9 NumPad9 | 105 | The 9 key on the numeric keypad. |
O O O O | 79 | The O key. |
Oem1 Oem1 Oem1 Oem1 | 186 | The OEM 1 key. |
Oem102 Oem102 Oem102 Oem102 | 226 | The OEM 102 key. |
Oem2 Oem2 Oem2 Oem2 | 191 | The OEM 2 key. |
Oem3 Oem3 Oem3 Oem3 | 192 | The OEM 3 key. |
Oem4 Oem4 Oem4 Oem4 | 219 | The OEM 4 key. |
Oem5 Oem5 Oem5 Oem5 | 220 | The OEM 5 key. |
Oem6 Oem6 Oem6 Oem6 | 221 | The OEM 6 key. |
Oem7 Oem7 Oem7 Oem7 | 222 | The OEM 7 key. |
Oem8 Oem8 Oem8 Oem8 | 223 | The OEM 8 key. |
OemBackslash OemBackslash OemBackslash OemBackslash | 226 | The OEM angle bracket or backslash key on the RT 102 key keyboard (Windows 2000 or later). |
OemClear OemClear OemClear OemClear | 254 | The CLEAR key. |
OemCloseBrackets OemCloseBrackets OemCloseBrackets OemCloseBrackets | 221 | The OEM close bracket key on a US standard keyboard (Windows 2000 or later). |
Oemcomma Oemcomma Oemcomma Oemcomma | 188 | The OEM comma key on any country/region keyboard (Windows 2000 or later). |
OemMinus OemMinus OemMinus OemMinus | 189 | The OEM minus key on any country/region keyboard (Windows 2000 or later). |
OemOpenBrackets OemOpenBrackets OemOpenBrackets OemOpenBrackets | 219 | The OEM open bracket key on a US standard keyboard (Windows 2000 or later). |
OemPeriod OemPeriod OemPeriod OemPeriod | 190 | The OEM period key on any country/region keyboard (Windows 2000 or later). |
OemPipe OemPipe OemPipe OemPipe | 220 | The OEM pipe key on a US standard keyboard (Windows 2000 or later). |
Oemplus Oemplus Oemplus Oemplus | 187 | The OEM plus key on any country/region keyboard (Windows 2000 or later). |
OemQuestion OemQuestion OemQuestion OemQuestion | 191 | The OEM question mark key on a US standard keyboard (Windows 2000 or later). |
OemQuotes OemQuotes OemQuotes OemQuotes | 222 | The OEM singled/double quote key on a US standard keyboard (Windows 2000 or later). |
OemSemicolon OemSemicolon OemSemicolon OemSemicolon | 186 | The OEM Semicolon key on a US standard keyboard (Windows 2000 or later). |
Oemtilde Oemtilde Oemtilde Oemtilde | 192 | The OEM tilde key on a US standard keyboard (Windows 2000 or later). |
P P P P | 80 | The P key. |
Pa1 Pa1 Pa1 Pa1 | 253 | The PA1 key. |
Packet Packet Packet Packet | 231 | Used to pass Unicode characters as if they were keystrokes. The Packet key value is the low word of a 32-bit virtual-key value used for non-keyboard input methods. |
PageDown PageDown PageDown PageDown | 34 | The PAGE DOWN key. |
PageUp PageUp PageUp PageUp | 33 | The PAGE UP key. |
Pause Pause Pause Pause | 19 | The PAUSE key. |
Play Play Play Play | 250 | The PLAY key. |
Print Print Print Print | 42 | The PRINT key. |
PrintScreen PrintScreen PrintScreen PrintScreen | 44 | The PRINT SCREEN key. |
Prior Prior Prior Prior | 33 | The PAGE UP key. |
ProcessKey ProcessKey ProcessKey ProcessKey | 229 | The PROCESS KEY key. |
Q Q Q Q | 81 | The Q key. |
R R R R | 82 | The R key. |
RButton RButton RButton RButton | 2 | The right mouse button. |
RControlKey RControlKey RControlKey RControlKey | 163 | The right CTRL key. |
Return Return Return Return | 13 | The RETURN key. |
Right Right Right Right | 39 | The RIGHT ARROW key. |
RMenu RMenu RMenu RMenu | 165 | The right ALT key. |
RShiftKey RShiftKey RShiftKey RShiftKey | 161 | The right SHIFT key. |
RWin RWin RWin RWin | 92 | The right Windows logo key (Microsoft Natural Keyboard). |
S S S S | 83 | The S key. |
Scroll Scroll Scroll Scroll | 145 | The SCROLL LOCK key. |
Select Select Select Select | 41 | The SELECT key. |
SelectMedia SelectMedia SelectMedia SelectMedia | 181 | The select media key (Windows 2000 or later). |
Separator Separator Separator Separator | 108 | The separator key. |
Shift Shift Shift Shift | 65536 | The SHIFT modifier key. |
ShiftKey ShiftKey ShiftKey ShiftKey | 16 | The SHIFT key. |
Sleep Sleep Sleep Sleep | 95 | The computer sleep key. |
Snapshot Snapshot Snapshot Snapshot | 44 | The PRINT SCREEN key. |
Space Space Space Space | 32 | The SPACEBAR key. |
Subtract Subtract Subtract Subtract | 109 | The subtract key. |
T T T T | 84 | The T key. |
Tab Tab Tab Tab | 9 | The TAB key. |
U U U U | 85 | The U key. |
Up Up Up Up | 38 | The UP ARROW key. |
V V V V | 86 | The V key. |
VolumeDown VolumeDown VolumeDown VolumeDown | 174 | The volume down key (Windows 2000 or later). |
VolumeMute VolumeMute VolumeMute VolumeMute | 173 | The volume mute key (Windows 2000 or later). |
VolumeUp VolumeUp VolumeUp VolumeUp | 175 | The volume up key (Windows 2000 or later). |
W W W W | 87 | The W key. |
X X X X | 88 | The X key. |
XButton1 XButton1 XButton1 XButton1 | 5 | The first x mouse button (five-button mouse). |
XButton2 XButton2 XButton2 XButton2 | 6 | The second x mouse button (five-button mouse). |
Y Y Y Y | 89 | The Y key. |
Z Z Z Z | 90 | The Z key. |
Zoom Zoom Zoom Zoom | 251 | The ZOOM key. |
Examples
The following code example uses the KeyDown event to determine the type of character entered into the control.
// Boolean flag used to determine when a character other than a number is entered.
private:
bool nonNumberEntered;
// Handle the KeyDown event to determine the type of character entered into the control.
void textBox1_KeyDown( Object^ /*sender*/, System::Windows::Forms::KeyEventArgs^ e )
{
// Initialize the flag to false.
nonNumberEntered = false;
// Determine whether the keystroke is a number from the top of the keyboard.
if ( e->KeyCode < Keys::D0 || e->KeyCode > Keys::D9 )
{
// Determine whether the keystroke is a number from the keypad.
if ( e->KeyCode < Keys::NumPad0 || e->KeyCode > Keys::NumPad9 )
{
// Determine whether the keystroke is a backspace.
if ( e->KeyCode != Keys::Back )
{
// A non-numerical keystroke was pressed.
// Set the flag to true and evaluate in KeyPress event.
nonNumberEntered = true;
}
}
}
//If shift key was pressed, it's not a number.
if (Control::ModifierKeys == Keys::Shift) {
nonNumberEntered = true;
}
}
// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
void textBox1_KeyPress( Object^ /*sender*/, System::Windows::Forms::KeyPressEventArgs^ e )
{
// Check for the flag being set in the KeyDown event.
if ( nonNumberEntered == true )
{ // Stop the character from being entered into the control since it is non-numerical.
e->Handled = true;
}
}
// Boolean flag used to determine when a character other than a number is entered.
private bool nonNumberEntered = false;
// Handle the KeyDown event to determine the type of character entered into the control.
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
// Initialize the flag to false.
nonNumberEntered = false;
// Determine whether the keystroke is a number from the top of the keyboard.
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
// Determine whether the keystroke is a number from the keypad.
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
// Determine whether the keystroke is a backspace.
if(e.KeyCode != Keys.Back)
{
// A non-numerical keystroke was pressed.
// Set the flag to true and evaluate in KeyPress event.
nonNumberEntered = true;
}
}
}
//If shift key was pressed, it's not a number.
if (Control.ModifierKeys == Keys.Shift) {
nonNumberEntered = true;
}
}
// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
// Check for the flag being set in the KeyDown event.
if (nonNumberEntered == true)
{
// Stop the character from being entered into the control since it is non-numerical.
e.Handled = true;
}
}
' Boolean flag used to determine when a character other than a number is entered.
Private nonNumberEntered As Boolean = False
' Handle the KeyDown event to determine the type of character entered into the control.
Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) _
Handles textBox1.KeyDown
' Initialize the flag to false.
nonNumberEntered = False
' Determine whether the keystroke is a number from the top of the keyboard.
If e.KeyCode < Keys.D0 OrElse e.KeyCode > Keys.D9 Then
' Determine whether the keystroke is a number from the keypad.
If e.KeyCode < Keys.NumPad0 OrElse e.KeyCode > Keys.NumPad9 Then
' Determine whether the keystroke is a backspace.
If e.KeyCode <> Keys.Back Then
' A non-numerical keystroke was pressed.
' Set the flag to true and evaluate in KeyPress event.
nonNumberEntered = True
End If
End If
End If
'If shift key was pressed, it's not a number.
If Control.ModifierKeys = Keys.Shift Then
nonNumberEntered = true
End If
End Sub 'textBox1_KeyDown
' This event occurs after the KeyDown event and can be used
' to prevent characters from entering the control.
Private Sub textBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) _
Handles textBox1.KeyPress
' Check for the flag being set in the KeyDown event.
If nonNumberEntered = True Then
' Stop the character from being entered into the control since it is non-numerical.
e.Handled = True
End If
End Sub 'textBox1_KeyPress
Remarks
The Keys class contains constants for processing keyboard input. The members of the Keys enumeration consist of a key code and a set of modifiers combined into a single integer value. In the Win32 application programming interface (API) a key value has two halves, with the high-order bits containing the key code (which is the same as a Windows virtual key code), and the low-order bits representing key modifiers such as the SHIFT, CONTROL, and ALT keys.
Warning
Do not use the values in this enumeration for combined bitwise operations. The values in the enumeration are not mutually exclusive.
Note
This enumeration provides no way to test whether the CAPS LOCK or NUM LOCK keys are currently activated. You can use one of the following techniques to determine if these keys are activated:
Call the IsKeyLocked method of the Control class.
For finer control, use the Win32 API functions
GetKeyState
,GetAsyncKeyState
, orGetKeyboardState
defined in user32.dll, to do this. For more information about calling native functions, see Consuming Unmanaged DLL Functions.
The following table shows the key code values represented by two enumerated values, representing both the general original equipment manufacturer (OEM) keys and the more specific U.S.-keyboard associations.
Hexadecimal value | U.S. keyboard | General OEM |
---|---|---|
BA | OemSemicolon | Oem1 |
BF | OemQuestion | Oem2 |
C0 | Oemtilde | Oem3 |
DB | OemOpenBrackets | Oem4 |
DC | OemPipe | Oem5 |
DD | OemCloseBrackets | Oem6 |
DE | OemQuotes | Oem7 |
E2 | OemBackslash | Oem102 |
Caution
For the .NET Framework 2.0, a member IMEAccept was added that supersedes the previous entry, IMEAceept, which was spelled incorrectly. The older version has been retained for backward compatibility, but it may be deleted in future versions of the .NET Framework
Applies to
See also
Feedback
We'd love to hear your thoughts. Choose the type you'd like to provide:
Our feedback system is built on GitHub Issues. Read more on our blog.
Loading feedback...