Что возвращает функция glutGetModifiers() из freeglut?

Модератор: Модераторы разделов

MiK13
Сообщения: 1180
ОС: Linux Debian

Что возвращает функция glutGetModifiers() из freeglut?

Сообщение MiK13 »

Есть программа. Отображает некую информацию. С использованием freeglut.
Завершение работы сделал по Alt+X:

Код: Выделить всё

void keyboard(unsigned char key,int x,int y) {
  int ms=glutGetModifiers();
  printf(" --- %c ([%d]%d,%d) {%d} --- \n",key,key,x,y,ms);
     ...
  switch(key) {
      ...
    case 'X': case 'x': {
      if(ms==4) exit(0);
      break;
    }
Под Debian 11 работает нормально.
Запустил под Debian 12 -- не могу закрыть. Закрыл по Alt+F4
Стал разбираться. Оказалось, что при нажатии Alt+X ms имеет значение 12, в то время как по Debian 11 4.
Заменил ms==4 на ms&4 стало работать,
(Корректнее, наверно (ms&7)==GLUT_ACTIVE_ALT, но пока это не принципиально)

И хочется узнать, а что означает бит 0x0008? Почему его не было в Debian 11, а в Debian 12 он появился?
Спасибо сказали: