2012-02-13 2 views
1

Я хочу, чтобы проверить ключ-события, как нажатие вверх/вниз, нажав ...список ключевых констант

Но функция, которую я создал, чтобы назвать, получает «неподписанные символ». Я могу проверить ключи, такие как W/A/S/D, с key == 'w', но я не знаю, как проверить другие ключи.

Есть ли список доступных символов, например "\ n"?

+0

Проверьте это: http://www.asciitable.com/ – yasar

+0

Не могли бы вы перефразировать свой вопрос? С "char-types", вы имеете в виду 'char',' char16_t' и 'char32_t', или вы имеете в виду кодовые точки? (К сожалению, пока у меня недостаточно репутации, чтобы проголосовать.) –

ответ

4

Вы можете найти список управляющих последовательностей символов here.

Обратите внимание, что некоторые ключи должны быть обработаны с помощью glutSpecialFunc()/glutSpecialUpFunc(), для которого обработчик применяется следующее:

Ключевой аргумент может принимать одно из следующих заданных значений констант:

  • GLUT_KEY_F1 , GLUT_KEY_F2, ..., GLUT_KEY_F12 - клавиши F1-F12
  • GLUT_KEY_PAGE_UP, GLUT_KEY_PAGE_DOWN - клавиши «вверх» и «вниз страницы»
  • GLUT_KEY_HOME, GLUT_KEY_END - Дом и конец клавиши
  • GLUT_KEY_LEFT, GLUT_KEY_RIGHT, GLUT_KEY_UP, GLUT_KEY_DOWN - клавиши со стрелками
  • GLUT_KEY_INSERT - Вставить ключ
0

Тип естественного символа в C++ использует символы ASCII. Вот список: http://www.asciitable.com/

Вы можете проверить что-то вроде новой строки, как это:

if (key == '\n') 
+0

Простой тип 'char' может использоваться для хранения символов (хотя он является интегральным типом). Кодировка символов - это реализация и зависящая от языка, но прошло много времени с тех пор, как я увидел ASCII. (Самый распространенный сегодня, похоже, UTF-8, но ISO 8850-1 все еще широко распространен и был почти всеобщим не так давно.) –

+0

У меня создается впечатление, что char всегда один байт для каждой архитектуры. Как бы вы поместили символы UTF-8 в один байт? – Oleksi

+1

Многобайтовая последовательность UTF-8 хранится в нескольких 'char's. C++ позволяет кодировке выполнения быть многобайтовым кодированием (в отличие от широкого набора символов выполнения, в котором один wchar_t должен иметь возможность представлять все кодовые точки в выбранной кодировке) – bames53

0

Вы просите спасения последовательности.

Here - это полный список неграфических символов C++ и их escape-последовательностей.

0

Если я правильно понимаю, нет никакой системы, независимый способ получения необходимую информацию. То, что вы ищете, я думаю, называется кодом сканирования , и большинство систем будет иметь способ получить его “ под Unix, это будет что-то в библиотеке X, если вы работаете в окне и под Windows это, скорее всего, будет в библиотеке Windowing как . Вы получите код сканирования плюс некоторые биты, указывающие состояние различных клавиш, таких как shift, control и alt; и окно система будет генерировать событие каждый раз, когда состояние клавиши изменяется.

Если вы не работаете в окне (или в отдельном окне), он все еще может быть possilbe, чтобы получить какую-то ключевое состояние, если вы читаете непосредственно из терминала, хотя я не слишком знакомы с возможностями. (Помните, что исторически, входные интерфейсы предназначены для чтения по последовательной линии, и такого рода информации просто не был доступен в C++.)