Я пытаюсь имитировать нажатие кнопки клавиатуры SDL (используя C). Я просмотрел информационные страницы SDL в Интернете, но у меня все еще нет ничего, что бы последовательно работало.Имитация кнопки клавиатуры Нажмите [SDL Library]
я следующее (извлекал обработку прерываний, создание окон и т.д.)
while(1){
SDL_Event user_event;
user_event.type = SDL_SCANCODE_LEFT;
SDL_PushEvent(&user_event);
SDL_PumpEvents();
const Uint8 *state = SDL_GetKeyboardState(NULL);
if (state[SDL_SCANCODE_LEFT]) {
printf("LEFT PRESSED");
}
if (state[SDL_SCANCODE_RIGHT]) {
printf("RIGHT PRESSED");
}
}
Я никогда не увидеть «ЛЕВЫЙ ПРЕССОВАННОЕ» строка печатается, хотя, когда я нажимаю клавишу со стрелкой вправо (с клавиатуры) Я вижу соответствующий результат. Похоже, что нажатие левой клавиши никогда не нажимается на состояние var.
Любая помощь была бы принята с благодарностью.
Возможно у вас нет английской клавиатуры, и ваши сканкоды разные , Попробуйте 'SDL_GetScancodeFromKey()' получить scancode из кодов ключей. Ссылка: https://wiki.libsdl.org/SDL_GetScancodeFromKey?highlight=%28%5CbCategoryKeyboard%5Cb%29%7C%28CategoryEnum%29%7C%28CategoryStruct%29 – Lasoloz
Тип события определенно неверен, но в любом случае - [документация] (https://wiki.libsdl.org/SDL_PushEvent) явно указывает 'Примечание. Нажатие событий ввода устройства в очередь не изменяет состояние устройства в SDL. '. – keltar