Solved

using keyboard arrow keys

Posted on 2001-09-16
8
1,548 Views
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?
0
Comment
Question by:mitchguy
  • 3
  • 2
  • 2
  • +1
8 Comments
 
LVL 6

Expert Comment

by:JonFish85
Comment Utility
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
VK_OEM_CLEAR FE Clear key
</MSDN>
it appears as though Left arrow = 25, Up = 26, Right = 27, Down = 28

hope this helps!
0
 

Author Comment

by:mitchguy
Comment Utility
I'm programming on a Linux machine are those codes just for
microsoft environments?
0
 
LVL 6

Expert Comment

by:JonFish85
Comment Utility
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...
0
 
LVL 30

Expert Comment

by:Axter
Comment Utility
>>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.
0
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 
LVL 30

Accepted Solution

by:
Axter earned 50 total points
Comment Utility
Example code:
#include <conio.h>
#include <string.h>

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

0
 
LVL 4

Expert Comment

by:IainHere
Comment Utility
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)
http://embedded.linuxjournal.com/magazine/issue03/4660/?sid=37e591e5395756e6adf6925d2e7b9c11

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:

http://developer.gnome.org/doc/GGAD/sec-gdkevent.html
(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.
0
 

Author Comment

by:mitchguy
Comment Utility
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.

0
 

Author Comment

by:mitchguy
Comment Utility
lainHere,
thanks for the Linux info, I'll post some points for you.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

In days of old, returning something by value from a function in C++ was necessarily avoided because it would, invariably, involve one or even two copies of the object being created and potentially costly calls to a copy-constructor and destructor. A…
This article will show you some of the more useful Standard Template Library (STL) algorithms through the use of working examples.  You will learn about how these algorithms fit into the STL architecture, how they work with STL containers, and why t…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

772 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now