Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2012, 07:18   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Glut. Определить нажата или отпущена клавиша клавиатуры

Появилась необходимость в информации о том нажата или отпущена клавиша клавиатуры(именно клавиатуры, а не мыши). Так как код хочется сделать кроссплатформенным все это осуществляется через библиотеку glut.
Обычно для обработки клавиатуры используется процедура такого типа
Код:
void KeyboardProc(int key,int x,int y)
Я нашел в паутине такой код
Код:
switch(key)

    {

        case GLUT_KEY_UP: {y--; break;}

        case GLUT_KEY_DOWN: {y++; break;}

        case GLUT_KEY_LEFT: {x--; break;}

        case GLUT_KEY_RIGHT: {x++; break;}

    }
Все хорошо, но используются стрелочки, а мне бы ASCII символы, например, "q","w","e" и т.д. Возможна такая реализация? Как ее осуществить? Хочу заметить, что все это работает в linux и GetAsyncKeyState() не подойдет, хотя если есть ее аналог то с радостью использую. Но опять же, хотелось бы кроссплатформенности.
Заранее благодарю.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 13.11.2012, 09:32   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Откройте хедер глюта и ищите там дифайн или конст GLUT_KEY_UP, рядом и для всех остальных кнопок должно быть.
phomm вне форума Ответить с цитированием
Старый 13.11.2012, 15:43   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
Откройте хедер глюта и ищите там дифайн или конст GLUT_KEY_UP, рядом и для всех остальных кнопок должно быть.
Так использовать их не получится. Я выше описал функцию обрабатывающую клавиатуру. Как в нее можно передать состояние?
Хотя если используется ASCII то вполне возможно, что второе слово переменной key будет состоянием, но тогда бы простое равенство key=='a' не прокатило.
Цитата:
дифайн или конст GLUT_KEY_UP
В любом случае для символьных клавиш такого не будет.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 13.11.2012 в 15:46.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 23.11.2012, 23:19   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Ну неужели нет предположений больше? Я уже все испробовал, разве, что использовать getAsyncKeyState. Но это не кроссплатформенно.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 15.12.2012, 03:55   #5
VmanMaslov
Форумчанин
 
Аватар для VmanMaslov
 
Регистрация: 12.06.2011
Сообщений: 115
По умолчанию

glutKeyboardUpFunc
Men do it in ASCII!
VmanMaslov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Edit1Change, как сделать проверку, какая клавиша нажата? hon Помощь студентам 4 06.11.2011 19:19
Если нажата клавиша то.... bananasus Помощь студентам 6 18.02.2011 15:29
Как определить когда нажата кнопка мыши, если она нажата в совсем другой программе? Iceman Общие вопросы Delphi 2 19.10.2009 19:03
Нажата ли клавиша... Xcopy Паскаль, Turbo Pascal, PascalABC.NET 14 26.03.2009 11:14
Как с помощье ReadKey определить что нажата клавиша "Стрелка" Викдон Паскаль, Turbo Pascal, PascalABC.NET 5 05.02.2009 00:47