2013-09-28 8 views
0

Я пишу функцию, которая вводит пользователя и выполняет действие в соответствии с введенным пользователем. Я использую оператор case, который проверяет, что вводил пользователь.C++ Проверка ввода ключа

У меня возникли трудности с просмотром, если пользователь нажал на кнопку «домой», «конец», «вкл» и «del». Переменная по умолчанию, такая как HOME, INSERT, DELETE и END, кажется, не имеет эффекта, но клавиши со стрелками используют LEFT и RIGHT. Я делаю это в GNU/Linux. Я не уверен, что я делаю неправильно.

Любая помощь была бы принята с благодарностью.

+2

Если вы показать код, который вы имеете, было бы легче для людей, чтобы помочь вам, как вы читаете пользовательский ввод, например – lijat

+0

только из GetChar() function –

ответ

0

Вот проблемы:

#include <stdio.h> 

//Compiled on GNU/Linux 
//By: Saulius Grybas 


int main() 
{ 
     int key; 
     bool done = false; 

    while (!done) 
    { 

     key = getchar(); 

     switch (key){ 
       case HOME: 
         //Home key is pressed/perform action 
         done = true; 
         break; 
       case END: 
         //END key is pressed/perform action 
         done = true; 
         break; 
       case DEL: 
         //DEL key is presed/perform action 
         done = true; 
         break; 
       case BACKSPACE: 
         //backspace is pressed/perform action 
         done = true; 
         break; 
       default: 
         done = false; 
         break; 
     } 
       printf ("%d%s\n", key, " - Integer of key is pressed!"); 
    } 

    return 0; 
} 
+0

Ваши константы HOME END DEL и BACKSPACE, похоже, не определены, была ваша проблема. Для меня опубликованный код не компилируется, он компилируется для вас? – lijat

+0

Я знаю. Я ищу коды клавиш, которые представляют эти нажатия клавиш, поэтому я могу заменить «нажатие клавиши» кодом клавиши. Например: случай 0x10: // вводится, я считаю, но я не могу получить символы выше. Также, если я вхожу в '\ b', это backspace. –

+0

Вы можете запустить int c = getchar(); printf ("код% d \ n", c); и посмотреть, что вы получаете? или ваша проблема в том, что getchar не возвращается при нажатии этих клавиш? – lijat

0

Они определяют коды сканирования (IBM PC) для ключей. Все числа десятичны.

#define PAGE_UP  73 
#define HOME  71 
#define END   79 
#define PAGE_DOWN 81 
#define UP_ARROW 72 
#define LEFT_ARROW 75 
#define DOWN_ARROW 80 
#define RIGHT_ARROW 77 
#define F1   59 
#define F2   60 
#define F3   61 
#define F4   62 
#define F5   63 
#define F6   64 
#define F7   65 
#define F8   66 
#define F9   67 
#define F10   68 

#include <iostream> 
#include <conio.h> 

Вот Linux коды сканирования: http://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlkeycodes.html

Смежные вопросы