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 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, or GetKeyboardState 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