SDL_GetKeyState не определяет состояние нажатия клавиш на нескольких японских клавиатурах, которые я тестировал.В частности, Y |(рядом с клавишей Backspace) и \ _ (рядом со смещением вправо) и клавишами композиции Kana на каждой стороне панели ПРОБЕЛ.Y |и \ _ генерировать и возвращать символы, но их состояние нажатия клавиши не замечено.
Урезанный код.Нажатие клавиш возвращает символы:
if (SDL_PollEvent(&ev))
switch(ev.type) {
case SDL_KEYDOWN:
ch = ev.key.keysym.unicode;
// Y| and \_ return characters
Но определение их состояния не работает.Использование кода, подобного этому, показывает отсутствие реакции на нажатие клавиш:
SDL_PumpEvents();
keystate = SDL_GetKeyState(NULL);
while(SDL_PollEvent(&ev))
{ if (ev.type == SDL_QUIT) exit(0); }
for (arg=0; arg<512; arg++)
{ printf("%2x ",keystate[arg]); }
Есть ли более глубокий уровень, который я могу вызвать для обнаружения состояний нажатия клавиш?Или SDL неподвижно привязан только к тем клавиатурам, с которыми когда-либо сталкивались авторы?