![](/img/trans.png)
[英]Can I get simple asm.js code? when simple c api code compile using emscripten
[英]How do I get all key states when using asm.js/emscripten/SDL?
當使用SDL進行鍵盤輸入時,似乎只有某些鍵起作用(箭頭,pageup \\ pagedown)。
這是我正在使用的代碼:
const auto sdlScanCodes = {...SDL_SCANCODE_A, SDL_SCANCODE_F1, SDL_SCANCODE_SPACE, SDL_SCANCODE_LSHIFT ...etc}
SDL_PumpEvents();
const auto sdlKeyStatesPtr = SDL_GetKeyboardState(nullptr);
for(auto sdlScanCode: sdlScanCodes) {
const auto sdlKeyCode = SDL_SCANCODE_TO_KEYCODE(sdlScanCode);
const bool downKeyCode = sdlKeyStatesPtr[sdlKeyCode];
const bool downScanCode = sdlKeyStatesPtr[sdlScanCode];
}
更新:請注意, downScanCode永遠不起作用 ,並且如上所述 , downKeyCode對於某些鍵有效。
由SDL_GetKeyboardState
返回的數組應該由SDL 2.0中的掃描碼索引,而不是像SDL 1.2中的鍵碼索引。 嘗試在不進行SDL_SCANCODE_TO_KEYCODE
轉換的情況下進行SDL_SCANCODE_TO_KEYCODE
。
供參考: https : //wiki.libsdl.org/SDL_GetKeyboardState
另外,我應該指出SDL_SCANCODE_TO_KEYCODE
不是通用轉換宏。 它只是設置一個高位,以便某些掃描碼可以是唯一的。 使用SDL_GetKeyFromScancode
和SDL_GetScancodeFromKey
。
當我直接使用鍵碼而不是轉換掃描碼時有效
const auto sdlKeyCodes = {...SDLK_a, SDLK_F1, SDLK_SPACE, SDLK_LSHIFT ...etc}
SDL_PumpEvents();
const auto sdlKeyStatesPtr = SDL_GetKeyboardState(nullptr);
for(auto sdlKeyCode: sdlKeyCodes ) {
const bool downKeyCode = sdlKeyStatesPtr[sdlKeyCode];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.