LINUX.ORG.RU

GLUT: glutKeyboardFunc(): cyrillic letters in ru_RU.UTF-8 locale


0

1
void keyWindow(unsigned char k, int x, int y) {
  switch(k) {
    case 0x1B : exit(0);
    default : {
      printf("0x%02X 0x%04X\n", k, glutGetModifiers());
      break;
    }
  }
}
....

 glutKeyboardFunc(keyWindow);

Если нажимаем кнопки q,w,e - всё хорошо: возвращаются коды:

0x71 0x0000
0x77 0x0000
0x65 0x0000

Но если начинаем нажимать й,ц,у,к,е,н:

0xD0 0x0000
0xD1 0x0000
0xD1 0x0000
0xD0 0x0000
0xD0 0x0000
0xD0 0x0000

Как правильно получить коды нажатий клавиш в русской раскладке средствами GLUT?

★★★★★

Скорее всего никак.
Пользуй http://www.glfw.org/ или SDL, который ты выкинул :)) Ну или сам как-то лови клаву через иксы.

Bad_ptr ★★★★★
()
Ответ на: комментарий от anonymous

Also, see glutSpecialFunc for a means to detect non-ASCII key strokes.

Оно не перехватывает Menu-key, например.
И на русские буквы, и на Ctrl/Shift не реагирует.
Вот здесь перечислены все коды, которые она перехватывает:
http://www.opengl.org/resources/libraries/glut/spec3/node54.html#SECTION00089...

pacify ★★★★★
() автор топика
Ответ на: комментарий от dikiy

This is a proposal is a work-in-progress, for the purpose of
discussion development. The Author is American, and does not
regularly use Uniciode. Therefore, input from international
language users is appreciated. This API is not currently
implemented in OpenGLUT.


Спасибо. Придётся использовать суррогат - SDL. Может, с третьего раза - понравится. :)

pacify ★★★★★
() автор топика
Ответ на: комментарий от dikiy

напиши патч для glut же ж :)

На Raspberry Pi оно не взлетит. Там OpenGL ES2.0 and OpenVG, http://www.raspberrypi.org/faqs , GLUT'а нет.

P.S. Посоветовался со своим знакомым - хорошим специалистом по OpenGL ... он посоветовал всё-таки взять SDL, не связываться с «убогим glut».

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

На Raspberry Pi оно не взлетит. Там OpenGL ES2.0 and OpenVG, http://www.raspberrypi.org/faqs , GLUT'а нет.

так glut же вообще сам по себе. Он никак не относится к железу.

dikiy ★★☆☆☆
()
Ответ на: комментарий от pacify

Придётся использовать суррогат - SDL.

LOLWUT. Это GLUT суррогат, а SDL — качественный кроссплатформенный продукт.

tensai_cirno ★★★★★
()

Никогда не видел игр, где хоткеи зависят от раскладки? Кстати, некоторые SDL-нутые игры тоже этим грешат.

Kosyak ★★★★
()
Ответ на: комментарий от Kosyak

Да что греха таить - куча софта, где разработчики о сканкодах не слышали и пишут хрен знает что.
А потом внезапно перестают работать ctrl+c ctrl+v в русской раскладке.

invy ★★★★★
()

а с какой целью нужны нажатия кнопок?

вообще игры и другие подобные приложения должны к скан-кодам клавиш привязываться, а не к буковкам на них. Если glut так не умеет, то он какашка

Вот в DirectInput, помню, с этим всё хорошо было :)

Harald ★★★★★
()
Ответ на: комментарий от Harald

а с какой целью нужны нажатия кнопок?

Хочу написать текстовый редактор с отображением буковок через OpenGL.

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

он посоветовал всё-таки взять SDL, не связываться с «убогим glut».

Правильно посоветовал.

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.