using keyboard arrow keys

Posted on 2001-09-16
Last Modified: 2010-05-18
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?
Question by:mitchguy
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +1

Expert Comment

ID: 6486539
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!

Author Comment

ID: 6486620
I'm programming on a Linux machine are those codes just for
microsoft environments?

Expert Comment

ID: 6486625
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...
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

LVL 30

Expert Comment

ID: 6486763
>>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.
LVL 30

Accepted Solution

Axter earned 50 total points
ID: 6486765
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;


Expert Comment

ID: 6487068
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.

Author Comment

ID: 6490633
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.


Author Comment

ID: 6490658
thanks for the Linux info, I'll post some points for you.

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
Introduction This article is a continuation of the C/C++ Visual Studio Express debugger series. Part 1 provided a quick start guide in using the debugger. Part 2 focused on additional topics in breakpoints. As your assignments become a little more …
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…

717 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question