У меня есть небольшой проект, в котором я использую SDL, и я играл с различными доступными драйверами. Я наткнулся на драйвер aalib и понял, что событие SDL_KEYUP никогда не вызывалось.
Это, однако, происходит только при определенных условиях. Событие отправляется при использовании драйвера X, но не при использовании в режиме консоли (т. Е. С использованием Ctrl + Alt + F1).
Вот минимальный код для проверки:
#include <SDL/SDL.h>
#include <stdio.h>
int main()
{
SDL_Init(0);
SDL_SetVideoMode(64, 64, 32, SDL_SWSURFACE);
while(1)
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
printf("Key down: %d\n", event.key.keysym.sym);
else if(event.type == SDL_KEYUP)
printf("Key up: %d\n", event.key.keysym.sym);
else if(event.type == SDL_QUIT)
SDL_Quit();
}
}
}
Затем, чтобы запустить его с aalib:
env SDL_VIDEODRIVER=aalib ./a.out
Мой вопрос: это нужно считать ошибкой? Или это что-то, что aalib не может знать, потому что консоль не выдаст эту информацию?
Если aalib не может получить эту информацию, я считаю, что SDL позора не может обеспечить одинаковые функции для всех своих драйверов.
ОС: FreeBSD 8.2
SDL версия: 1.2.14