xtd - Reference Guide  0.1.0
Modern c++17 framework to create console, gui and unit test applications on Windows, macOS and Linux.

§ keys

enum xtd::forms::keys : long long
strong

Specifies key codes and modifiers.

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.
Remarks
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 oem_semicolon oem1
 BF  oem_question oem2
C0 oem_tilde oem3
 DB  oem_open_brackets oem4
 DC  oem_pipe oem5
DD  oem_close_brackets oem6
DE  oem_quotes oem7
E2  oem_backslash oem102
Examples
The following code example uses the KeyDown event to determine the type of character entered into the control.
// bool flag used to determine when a character other than a number is entered.
bool non_number_entered = false;
// Handle the KeyDown event to determine the type of character entered into the control.
void text_box1_key_down(const control& sender, key_event_args& e) {
// Initialize the flag to false.
non_number_entered = false;
// Determine whether the keystroke is a number from the top of the keyboard.
if (e.key_code() < keys::d0 || e.key_code() > keys::d9) {
// Determine whether the keystroke is a number from the keypad.
if (e.key_code() < keys::num_pad0 || e.key_code() > keys::num_pad9) {
// Determine whether the keystroke is a backspace.
if(e.key_code() != keys::back) {
// A non-numerical keystroke was pressed.
// Set the flag to true and evaluate in key_press event.
non_number_entered = true;
}
}
}
//If shift key was pressed, it's not a number.
if (control::modifier_keys() == keys::Shift) {
non_number_entered = true;
}
}
// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
void text_box1_key_press(const control& sender, key_press_event_args& e) {
// Check for the flag being set in the key_down event.
if (non_number_entered == true) {
// Stop the character from being entered into the control since it is non-numerical.
e.handled(true);
}
}
Enumerator
none 

No key pressed.

lbutton 

The left mouse button.

rbutton 

The right mouse button.

cancel 

The CANCEL key.

mbutton 

The middle mouse button (three-button mouse).

xbutton1 

The first x mouse button (five-button mouse).

xbutton2 

The second x mouse button (five-button mouse).

back 

The BACK key.

tab 

The TAB key.

line_feed 

The LINEFEED key.

clear 

The CLEAR key.

ret 

The RETURN key.

enter 

The ENTER key.

shift_key 

The SHIFT key.

control_key 

The CTRL key.

menu 

The ALT key.

pause 

The PAUSE key.

caps_lock 

The CAPS LOCK key.

capital 

The CAPS LOCK key.

kana_mode 

The IME Kana mode key.

hanguel_mode 

The IME Hanguel mode key. (maintained for compatibility; use HangulMode)

hangul_mode 

The IME Hangul mode key.

junja_mode 

The IME Junja mode key.

final_mode 

The IME Final mode key.

kanji_mode 

The IME Kanji mode key.

hanja_mode 

The IME Hanja mode key.

escape 

The ESC key.

ime_convert 

The IME convert key.

ime_nonconvert 

The IME nonconvert key.

ime_accept 

The IME accept key.

ime_mode_change 

The IME mode change key.

space 

The SPACEBAR key.

page_up 

The PAGE UP key.

prior 

The PAGE UP key.

page_down 

The PAGE DOWN key.

next 

The PAGE DOWN key.

end 

The END key.

home 

The HOME key.

left 

The LEFT key.

up 

The UP key.

right 

The RIGHT key.

down 

The DOWN key.

select 

The SELECT key.

print 

The PRINT key.

execute 

The EXECUTE key.

print_screen 

The PRINT SCREEN key.

snapshot 

The PRINT SCREEN key.

insert 

The INSERT key.

del 

The DEL key.

help 

The HELP key.

d0 

The 0 key.

d1 

The 1 key.

d2 

The 2 key.

d3 

The 3 key.

d4 

The 4 key.

d5 

The 5 key.

d6 

The 6 key.

d7 

The 7 key.

d8 

The 8 key.

d9 

The 9 key.

The A key.

The B key.

The C key.

The D key.

The E key.

The F key.

The G key.

The H key.

The I key.

The J key.

The K key.

The L key.

The M key.

The N key.

The O key.

The P key.

The Q key.

The R key.

The S key.

The T key.

The U key.

The V key.

The W key.

The X key.

The Y key.

The Z key.

lwin 

The left Windows logo key (Microsoft Natural Keyboard).

rwin 

The right Windows logo key (Microsoft Natural Keyboard).

apps 

The application key (Microsoft Natural Keyboard).

sleep 

The computer sleep key.

num_pad0 

The 0 key on the numeric keypad.

num_pad1 

The 1 key on the numeric keypad.

num_pad2 

The 2 key on the numeric keypad.

num_pad3 

The 3 key on the numeric keypad.

num_pad4 

The 4 key on the numeric keypad.

num_pad5 

The 5 key on the numeric keypad.

num_pad6 

The 6 key on the numeric keypad.

num_pad7 

The 7 key on the numeric keypad.

num_pad8 

The 8 key on the numeric keypad.

num_pad9 

The 9 key on the numeric keypad.

multiply 

The multiply key.

add 

The add key.

separator 

The separator key.

subtract 

The subtract key.

decimal 

The decimal key.

divide 

The divide key.

f1 

The F1 key.

f2 

The F2 key.

f3 

The F3 key.

f4 

The F4 key.

f5 

The F5 key.

f6 

The F6 key.

f7 

The F7 key.

f8 

The F8 key.

f9 

The F9 key.

f10 

The F10 key.

f11 

The F11 key.

f12 

The F12 key.

f13 

The F13 key.

f14 

The F14 key.

f15 

The F15 key.

f16 

The F16 key.

f17 

The F17 key.

f18 

The F18 key.

f19 

The F19 key.

f20 

The F20 key.

f21 

The F21 key.

f22 

The F22 key.

f23 

The F23 key.

f24 

The F24 key.

num_lock 

The NUM LOCK key.

scroll 

The SCROLL LOCK key.

lshift_key 

The left SHIFT key.

rshift_key 

The right SHIFT key.

lcontrol_key 

The left CTRL key.

rcontrol_key 

The right CTRL key.

lmenu 

The left ALT key.

rmenu 

The right ALT key.

browser_back 

The browser back key.

browser_forward 

The browser forward key.

browser_refresh 

The browser refresh key.

browser_stop 

The browser stop key.

browser_search 

The browser search key.

browser_favorites 

The browser favorites key.

browser_home 

The browser home key.

volume_mute 

The volume mute key.

volume_down 

The volume down key.

volume_up 

The volume up key.

media_next_track 

The media next track key.

media_previous_track 

The media previous track key.

media_stop 

The media stop key.

media_play_pause 

The media play pause key.

launch_mail 

The launch mail key.

select_media 

The select media key.

launch_application1 

The start application one key.

launch_application2 

The start application two key.

oem1 

The OEM 1 key.

oem_semicolon 

The OEM Semicolon key on a US standard keyboard.

oem_plus 

The OEM plus key on any country/region keyboard.

oem_comma 

The OEM comma key on any country/region keyboard.

oem_minus 

The OEM minus key on any country/region keyboard.

oem_period 

The OEM period key on any country/region keyboard.

oem2 

The OEM 2 key.

oem_question 

The OEM question mark key on a US standard keyboard.

oem3 

The OEM 3 key.

oem_tilde 

The OEM tilde key on a US standard keyboard.

oem4 

The OEM 4 key.

oem_open_brackets 

The OEM open bracket key on a US standard keyboard.

oem5 

The OEM 5 key.

oem_pipe 

The OEM pipe key on a US standard keyboard.

oem6 

The OEM 6 key.

oem_close_brackets 

The OEM close bracket key on a US standard keyboard.

oem7 

The OEM 7 key.

oem_quotes 

The OEM singled/double quote key on a US standard keyboard.

oem8 

The OEM 8 key.

oem102 

The OEM 102 key.

oem_backslash 

The OEM angle bracket or backslash key on the RT 102 key keyboard.

process_key 

The PROCESS KEY key.

packet 

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.

attn 

The ATTN key.

crsel 

The CRSEL key.

exsel 

The EXSEL key.

erase_eof 

The ERASE EOF key.

play 

The PLAY key.

zoom 

The ZOOM key.

no_name 

A constant reserved for future use.

pa1 

The PA1 key.

oem_clear 

The CLEAR key.

command_key 

The CMD key.

lcommand_key 

The left CMD key.

rcommand_key 

The right CMD key.

function_key 

The right CMD key.

shift 

The SHIFt modifier key.

control 

The CTRL modifier key.

alt 

The ALT modifier key.

command 

The CMD modifier key.

meta 

The METTA modifier key.

function 

The FUNCTION modifier key.

key_code 

The bitmask to extract a key code from a key value.

modifiers 

The bitmask to extract modifiers from a key value.