При поиске на методы обнаружения нескольких ключей сразу в SDL 2, я наткнулся на этот кусок кода для СВД 1.x:SDL_Keycodes являются слишком большими для хранения
//author: Rob Loach
// Global key buffer
bool keys[256];
while(SDL_PollEvent(&mainEvent))
{
if(mainEvent.type == SDL_KEYDOWN)
{
keys[mainEvent.key.keysym.sym] = true;
}
else if(mainEvent.type == SDL_KEYUP)
{
keys[mainEvent.key.keysym.sym] = false;
}
}
Я попытался его реализации в SDL2 и a std::array<bool, 256>
, но у меня было Segmentation fault: 11
с кнопкой вверх.
Именно тогда я посмотрел на это: https://wiki.libsdl.org/SDLKeycodeLookup.
Большинство специальных клавиш, включая стрелку, функцию, символы и т. Д., Имеют десятичные представления в миллиардах.
Даже с простым кодом printf("%d\n", e.key.keysym.sym);
на, скажем, кнопка вверх дает:
1073741906
Segmentation fault: 11
Я на Mac, если это делает никакой разницы с кодами ошибок.
Итак, какие решения существуют в SDL 2?
Вы можете использовать 'std :: map', таким образом, вы не столкнетесь с этой проблемой. Я не думаю, что есть много, чтобы помочь вам в «SDL2». – olevegard
@olevegard Отлично! Не могли бы вы написать это как ответ? –