Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/513: Рейтинг темы: голосов - 513, средняя оценка - 4.51
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
1

Считывание нажатия клавиш с клавиатуры

24.09.2010, 17:41. Показов 98461. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
как сделать так чтобы программа завершалась при нажатие какой-то определенной клавиши?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2010, 17:41
Ответы с готовыми решениями:

Считывание нажатия комбинации клавиш
Суть такова, что не понимаю как отследить нажатие нескольких клавиш одновременно. Именно, нужно...

Как создать сообщение нажатия клавиш клавиатуры?
Мне надо что бы при каждом нажатии на клавишу клавиатуры у меня выполнялись определенные...

Имитация нажатия клавиш клавиатуры
Нужно сделать приложение эмуляции нажатия клавиш в любой программе, являющейся активной. Искал в...

Обработка нажатия клавиш клавиатуры в программе на C++
Здравствуйте, уважаемые форумчане и великие гуру! У меня есть такой вопрос: Как можно...

19
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
24.09.2010, 17:44 2
Смотря как вам нужно. Но например так.
C++
1
2
3
4
5
char ch;
std::cout<<"Enter q for exit\n";
std::cin>>ch;
if(ch=='q')
  return 0;
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
24.09.2010, 17:51  [ТС] 3
например стрелки вверх-вниз
просто надо сделать консольное меню похожее на кнопочное
0
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
24.09.2010, 17:57 4
Вот так будет работать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
using namespace std;
 
 
int main()
{
    char ch;
    int code;
    while(1)
    {
        ch = getch();
        code = static_cast<int>(ch);
            if(ch == 27) // если клавиша esc
                exit(0);
    }
 
}
Добавлено через 4 минуты
80 - кнопка навэрх
72 - кнопка вныз
или наоборот
4
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
24.09.2010, 18:20 5
NikolaWhite, а почему именно 27 ето - Esc ?
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
24.09.2010, 18:22 6
Лучший ответ Сообщение было отмечено как решение

Решение

Asics^, изучайте таблицы http://ascii-table.com/ascii.php
именно почему так, это наверное надо спрашивать у создателей ASCII
4
13 / 13 / 0
Регистрация: 15.01.2010
Сообщений: 144
24.09.2010, 18:23 7
Цитата Сообщение от Asics^ Посмотреть сообщение
NikolaWhite, а почему именно 27 ето - Esc ?
потому что енто ее код. погугли там есть коды до каждой кнопки на клаве
0
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
24.09.2010, 18:25 8
а почему именно 27 ето - Esc ?
Потому что это код клавиши ANSСII
У каждой клавиши есть свой код ввиде числа
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
24.09.2010, 18:35 9
Списибо,буду учить.
0
2 / 2 / 0
Регистрация: 17.06.2010
Сообщений: 38
24.09.2010, 19:03 10
Люди, а как вы делаете считывание клавишь вверх, вниз, влево. вправо, ведь getch() у всех этих клавишь выдает код 224. Лично я сделал так, что если клавиши 224 то снова поисходит getch(). Но может быть можно по другому?
Кстати не обязательно изучать таблицы где-то в интернетах, можно просто посмотреть коды с помошью дебага или сделать вывод кода клавишь на экран.
0
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
24.09.2010, 19:52 11
как вы делаете считывание клавишь вверх, вниз, влево. вправо, ведь getch() у всех этих клавишь выдает код 224.
Непонятно откуда у тебя берется 224, должно быть 77, 75, 80, 72

Кстати не обязательно изучать таблицы где-то в интернетах, можно просто посмотреть коды с помошью дебага или сделать вывод кода клавишь на экран.
а поподробнее можно? (Если это касается VS Express)
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
24.09.2010, 20:27 12
NikolaWhite, ну примерно вот так:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <conio.h>
int main()
{
char k;
std::cin >> k;
std::cout << int(k) << std::endl;
getch();
return 0;
}
1
2 / 2 / 0
Регистрация: 17.06.2010
Сообщений: 38
24.09.2010, 20:29 13
Ну сначала
C
1
key = getch();
, а дальше либо смотрим переменную key дебагом либо:
C
1
printf("%f", key)
как-то так. Дак вот если нажать вниз или вверх и т.д. то выдаст 224.
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
24.09.2010, 23:33 14
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Кстати не обязательно изучать таблицы где-то в интернетах
имхо, куда удобнее иметь под рукой таблицу, чем постоянно писать для этого отдельную прогу.
0
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
24.09.2010, 23:54 15
Сообщение от NikolaWhite
Кстати не обязательно изучать таблицы где-то в интернетах
Это не от NikolaWhite сообщение. Лично я уже добавил таблицу в избранное
0
fasked
25.09.2010, 01:02
  #16

Не по теме:

Цитата Сообщение от NikolaWhite Посмотреть сообщение
Это не от NikolaWhite сообщение. Лично я уже добавил таблицу в избранное
да просто из твоего сообщения копировать было удобнее :)

0
6 / 7 / 4
Регистрация: 14.01.2016
Сообщений: 50
11.07.2016, 11:04 17
C++
1
2
3
4
5
6
while(true){
if(_getch()== 27){
cout<<"Dosvidos";
exit(0);
}
}
0
0 / 0 / 0
Регистрация: 07.02.2018
Сообщений: 3
05.06.2018, 09:49 18
А если вилазит такая хрень??


Ошибка C4996 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _getch. See online help for details. Project58 c:\users\діма\source\repos\project58\project58\source.cpp 12

Добавлено через 1 минуту
Все ненеадо надо было просто заменить на _getch;
0
1 / 1 / 0
Регистрация: 22.03.2017
Сообщений: 6
28.11.2018, 20:00 19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "conio.h"
#include "windows.h"
#include <iostream>
 
using namespace std;
 
void StartMenu(int switcher)
{
    system("cls");
    switch (switcher)
    {
    case 1:
        cout << "\n\n\n                  <<  ИГРАТЬ  >>\n\n                      ПОМОЩЬ\n\n                      ЗАЛ СЛАВЫ\n\n                      ВЫХОД ";
        break;
    case 2:
        cout << "\n\n\n                      ИГРАТЬ      \n\n                   << ПОМОЩЬ >>\n\n                      ЗАЛ СЛАВЫ\n\n                      ВЫХОД ";
        break;
    case 3:
        cout << "\n\n\n                      ИГРАТЬ      \n\n                      ПОМОЩЬ\n\n                 <<   ЗАЛ СЛАВЫ  >>\n\n                      ВЫХОД ";
        break;
    case 4:
        cout << "\n\n\n                      ИГРАТЬ      \n\n                      ПОМОЩЬ\n\n                      ЗАЛ СЛАВЫ\n\n                   << ВЫХОД  >>";
        break;
    }
 
    int choice = _getch();
 
 
    if (choice == 224)
        choice = _getch();
 
    //cout << choice << endl;
 
    if (choice == 80)
        if (switcher != 4)
            StartMenu(switcher + 1);
        else
            StartMenu(1);
 
    if (choice == 72)
        if (switcher != 1)
            StartMenu(switcher - 1);
        else
            StartMenu(4);
 
    if (choice == 13 || choice == 32)
    {
        if (switcher == 1)
        {
            system("cls");
            cout << "1" << endl;
        }
        if (switcher == 2)
        {
            system("cls");
            cout << "2" << endl;
        }
        if (switcher == 3)
        {
            system("cls");
            cout << "3" << endl;
        }
        if (switcher == 4)
        {
            system("cls");
            cout << "4" << endl;
        }
    }
 
}
 
 
int main()
{
    setlocale(LC_ALL, "Rus");//задание кодировки
    system("mode con cols=51 lines=14");//задание размеров окна консоли
    system("title Space Invader");//задание описания окна консоли
    system("color 0A");//задание цвета консоли (0-задний фон; А-передний фон)
    HANDLE hCons = GetStdHandle(STD_OUTPUT_HANDLE);//получение хендла
    CONSOLE_CURSOR_INFO cursor = { 100, false };//число от 1 до 100 размер курсора в процентах; false\true - видимость
    SetConsoleCursorInfo(hCons, &cursor);//применение заданных параметров курсора
    
    StartMenu(3);
    
    system("pause >> void");
    return 0;
}
1
0 / 0 / 0
Регистрация: 18.01.2019
Сообщений: 4
18.01.2019, 18:19 20
Огромное спасибо!)
0
18.01.2019, 18:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2019, 18:19
Помогаю со студенческими работами здесь

Обработка одновременного нажатия клавиш клавиатуры
Мне необходимо написать примитивный &quot;теннис&quot; для двух игроков. Для начала я отрисовал две...

Перехватчик клавиш + эмуляция нажатия клавиш
Здравствуйте! Срочно нужна помощь! Моя программа работает в фоновом режиме. Мне нужно: 1) чтобы...

Считывание нажатия клавиш в Python
Суть проблемы в следующем: Требуется считать нажатия и отжатия клавиш при вводе в QLineEdit,...

Считывание нажатия клавиш вне зависимости от раскладки
typedef{int x; int y;} crd; int control(crd *playerCrd) { switch(getch()) { case 87:...

Нажатия клавиш клавиатуры
Изучаю AutoIt ноль полных дней. Экспериментирую на доте2. Функция...

Имитация нажатия клавиш клавиатуры
Всем привет! Прошу помочь мне. Я искал в интернете но там как то сложно. Я думаю можно обойтись...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru