Keyboard Input

 

Symbol

Value (hex)

Meaning

VK_BACK

08

Backspace key

VK_TAB

09

Tab key

VK_RETURN

0D

Enter key

VK_SHIFT

10

Shift key

VK_CONTROL

11

Ctrl key

VK_PAUSE

13

Pause key

VK_ESCAPE

1B

Esc key

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 keys

VK_UP

26

Up-arrow key

VK_RIGHT

27

Right-arrow key

VK_INSERT

2D

Insert key

VK_DELETE

2E

Delete key

VK_HELP

2F

Help key

VK_0 - VK_9

30 – 39

0 – 9 keys

VK_A – VK_Z

41 – 5A

A – Z keys

VK_F1 – VK_F12

70 – 7B

F1 – F12 keys

 

Msgs sent by Windows:

·      WM_CHAR – sent when a key is pressed

o     wParam = ASCII code

o     lParam = bit-encoded key-data

·      WM_KEYDOWN – sent when a key is down

o     wParam = virtual key code

o     lParam = bit-encoded key-data

·      WM_KEYUP – sent on key release

o     wParam = virtual-key code

o     lParam = encoded key-data

 

Bit-encoded Key-Data:

Bits

Description

0 – 15

Repeat count

16 – 23

Scan code (OEM specific)

24

Bool, true if extended key

25 – 28

Reserved

29

Bool, true if ALT down

30

Bool, true if last key same

31

Bool, true=press, false=release

 

case WM_CHAR;

{  // get ASCII code & bits

    int ascii_code = (int) wparam;

    int key_bits = (int) lparam;

    // do what ever …

 

    return(0);

}

 

case WM_KEYDOWN;

{  // get virtual_code & data bits

    int virtualCode = (int)wparam;

    int keyBits = (int)lparam;

 

    switch(virtualCode)

    { case VK_RIGHT: {} break;

       

       default: break;

    }

    return(0);

}