using keyboard arrow keys

I never tried using the up,down,left and right arrow keys
before in a program and i didn't see them listed in the ascii table in my c++ book. What are their ascii values or if they need to handled differently how?
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

here's what I got from MSDN:

Virtual-Key Codes
The following table shows the symbolic constant names, hexadecimal values, and mouse or keyboard equivalents for the virtual-key codes used by the system. The codes are listed in numeric order.

Symbolic constant name Value (hexadecimal) Mouse or keyboard equivalent
VK_LBUTTON 01 Left mouse button  
VK_RBUTTON 02 Right mouse button  
VK_CANCEL 03 Control-break processing  
VK_MBUTTON 04 Middle mouse button (three-button mouse)  
?  05?07 Undefined  
VK_BACK 08 backspace key  
VK_TAB 09 tab key  
?  0A?0B Undefined  
VK_CLEAR 0C clear key  
VK_RETURN 0D enter key  
?  0E?0F Undefined  
VK_SHIFT 10 shift key  
VK_CONTROL 11 ctrl key  
VK_MENU 12 alt key  
VK_PAUSE 13 pause key  
VK_CAPITAL 14 caps lock key  
?  15?19 Reserved for Kanji systems  
?  1A Undefined  
VK_ESCAPE 1B esc key  
?  1C?1F Reserved for Kanji systems  
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 key  
VK_UP 26 up arrow key  
VK_RIGHT 27 right arrow key  
VK_DOWN 28 down arrow key  
VK_SELECT 29 select key  
?  2A Original equipment manufacturer (OEM) specific  
VK_EXECUTE 2B execute key  
VK_SNAPSHOT 2C print screen key  
VK_INSERT 2D ins key  
VK_DELETE 2E del key  
VK_HELP 2F help key  
VK_0 30 0 key  
VK_1 31 1 key  
VK_2 32 2 key  
VK_3 33 3 key  
VK_4 34 4 key  
VK_5 35 5 key  
VK_6 36 6 key  
VK_7 37 7 key  
VK_8 38 8 key  
VK_9 39 9 key  
?  3A?40 Undefined  
VK_A 41 a key  
VK_B 42 b key  
VK_C 43 c key  
VK_D 44 d key  
VK_E 45 e key  
VK_F 46 f key  
VK_G 47 g key  
VK_H 48 h key  
VK_I 49 i key  
VK_J 4A j key  
VK_K 4B k key  
VK_L 4C l key  
VK_M 4D m key  
VK_N 4E n key  
VK_O 4F o key  
VK_P 50 p key  
VK_Q 51 q key  
VK_R 52 r key  
VK_S 53 s key  
VK_T 54 t key  
VK_U 55 u key  
VK_V 56 v key  
VK_W 57 w key  
VK_X 58 x key  
VK_Y 59 y key  
VK_Z 5A z key  
VK_LWIN 5B Left Windows key (Microsoft Natural Keyboard)  
VK_RWIN 5C Right Windows key (Microsoft Natural Keyboard)  
VK_APPS 5D Applications key (Microsoft Natural Keyboard)  
?  5E?5F Undefined  
VK_NUMPAD0 60 Numeric keypad 0 key  
VK_NUMPAD1 61 Numeric keypad 1 key  
VK_NUMPAD2 62 Numeric keypad 2 key  
VK_NUMPAD3 63 Numeric keypad 3 key  
VK_NUMPAD4 64 Numeric keypad 4 key  
VK_NUMPAD5 65 Numeric keypad 5 key  
VK_NUMPAD6 66 Numeric keypad 6 key  
VK_NUMPAD7 67 Numeric keypad 7 key  
VK_NUMPAD8 68 Numeric keypad 8 key  
VK_NUMPAD9 69 Numeric keypad 9 key  
VK_MULTIPLY 6A Multiply key  
VK_ADD 6B Add key  
VK_SEPARATOR 6C Separator key  
VK_SUBTRACT 6D Subtract key  
VK_DECIMAL 6E Decimal key  
VK_DIVIDE 6F Divide key  
VK_F1 70 f1 key  
VK_F2 71 f2 key  
VK_F3 72 f3 key  
VK_F4 73 f4 key  
VK_F5 74 f5 key  
VK_F6 75 f6 key  
VK_F7 76 f7 key  
VK_F8 77 f8 key  
VK_F9 78 f9 key  
VK_F10 79 f10 key  
VK_F11 7A f11 key  
VK_F12 7B f12 key  
VK_F13 7C f13 key  
VK_F14 7D f14 key  
VK_F15 7E f15 key  
VK_F16 7F f16 key  
VK_F17 80H f17 key  
VK_F18 81H f18 key  
VK_F19 82H f19 key  
VK_F20 83H f20 key  
VK_F21 84H f21 key  
VK_F22 85H f22 key  
VK_F23 86H f23 key  
VK_F24 87H f24 key  
?  88?8F Unassigned  
VK_NUMLOCK 90 num lock key  
VK_SCROLL 91 scroll lock key  
?  92?B9 Unassigned  
?  BA?C0 OEM specific  
?  C1?DA Unassigned  
?  DB?E4 OEM specific  
?  E5 Unassigned  
?  E6 OEM specific  
?  E7?E8 Unassigned  
?  E9?F5 OEM specific  
VK_ATTN F6 Attn key
VK_CRSEL F7 CrSel key
VK_EXSEL F8 ExSel key
VK_EREOF F9 Erase EOF key
VK_PLAY FA Play key
VK_ZOOM FB Zoom key
VK_NONAME FC Reserved for future use.  
VK_PA1 FD PA1 key
it appears as though Left arrow = 25, Up = 26, Right = 27, Down = 28

hope this helps!
mitchguyAuthor Commented:
I'm programming on a Linux machine are those codes just for
microsoft environments?
I have no idea, but I would be inclined to believe that they are Windows specific... Can you try printing out the ascii value of the current key pressed? Other than that I have no idea...
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

>>I'm programming on a Linux machine
I don't know if the input keys for a Linux machine is similar to the input keys for DOS, but you can try the DOS method to see if it works.
In DOS to input special keys, you way for a zero input char.  After that, the following key is the special key.
Example code:
#include <conio.h>
#include <string.h>

int main(int argc, char* argv[])
     int key;
          printf("Enter a special key or press ESC to quit.\n");
               key = getch();
          }while(key != 0 && key != 27);
          if (key != 27)
               key = getch();
               char KeyPress[] = "Unknown";
               case 59:
               case 60:
               case 61:
               case 62:
               case 63:
               case 64:
               case 65:
               printf("\nYou pressed %s\n",KeyPress);
     }while(key != 27);
     return 0;


Experts Exchange Solution brought to you by ConnectWise

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
What kind of Linux App are you developing?  If it's KDE, then that's based on Qt, which makes things easier for you.  See "Keyboard events" in this piece (plus plenty other Qt tutorials)

If you're developing for Gnome, they have a similar (but different, of course :-) system.  Here's a link to the relevent section of the Gnome docs:
(About 2/3 way down the page, "Keyboard Events").

I've heard something about GTK being nasty with keyboard events (ie not working properly), but I've never really used it, so wouldn't know.

Your best bet would probably be to find a program similar to the one you're writing, and finding out how they did it - that's a large part of the benefit of open source, after all.
mitchguyAuthor Commented:
I was getting an ascii value using getch() in a program on a windows 98 machine using visual studio. I think you've explained something that was happening i didn't understand about dos waiting for a 0 value first because every time i pressed the arrow key it cycled through the program twice
once giving a 0 value and then once the key press. Apparently the arrow keys have the same ascii value as four
capital letters already assigned on the key board.

mitchguyAuthor Commented:
thanks for the Linux info, I'll post some points for you.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.