Advertisement
Guest User

Get arrow keys

a guest
Mar 20th, 2012
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. // Get up/down/left/right
  2. // Hopefully this works.
  3.  
  4. #include <iostream>
  5. #include <windows.h>
  6. using std::cout;
  7.  
  8. WORD getArrowKeyPress();
  9.  
  10. int main()
  11. {
  12.     cout << "Press an arrow key (or enter to quit) and I'll tell you what you pressed:" << std::endl;
  13.    
  14.     bool getMeOut = false;
  15.    
  16.     while (!getMeOut)
  17.     {
  18.         switch (getArrowKeyPress())
  19.         {
  20.             case VK_UP:
  21.                 cout << "\rUp   "; break;
  22.             case VK_DOWN:
  23.                 cout << "\rDown "; break;
  24.             case VK_LEFT:
  25.                 cout << "\rLeft "; break;
  26.             case VK_RIGHT:
  27.                 cout << "\rRight"; break;
  28.             case VK_RETURN:
  29.                 getMeOut = true; break;
  30.             default:
  31.                 cout << "?!?!?!?!";
  32.         }
  33.     }
  34. }
  35.  
  36. WORD getArrowKeyPress()
  37. {
  38.     HANDLE stdIn = GetStdHandle(STD_INPUT_HANDLE);
  39.     DWORD blah; // Unused
  40.     INPUT_RECORD ir; // Hmm, Spanish words...
  41.    
  42.     while (ReadConsoleInput(stdIn, &ir, 1, &blah))
  43.     {
  44.         FlushConsoleInputBuffer(stdIn); // Dunno if this is really needed
  45.         if (ir.EventType != KEY_EVENT)
  46.             continue;
  47.        
  48.         const WORD& keyCode = ir.Event.KeyEvent.wVirtualKeyCode;
  49.         if (keyCode == VK_UP || keyCode == VK_DOWN ||
  50.             keyCode == VK_LEFT || keyCode == VK_RIGHT ||
  51.             keyCode == VK_RETURN)
  52.             return keyCode;
  53.     }
  54.     return 1; // Dunno what else to return here
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement