sdlxGetKeyboardState function keyboard
Get a snapshot of the current state of the keyboard.
The pointer returned is a pointer to an internal SDL array. It will be valid for the whole lifetime of the application and should not be freed by the caller.
A array element with a value of true means that the key is pressed and a value of false means that it is not. Indexes into this array are obtained by using SDL_Scancode values.
Use SDL_PumpEvents() to update the state array.
This function gives you the current state after all events have been processed, so if a key or button has been pressed and released before you process events, then the pressed state will never show up in the SDL_GetKeyboardState() calls.
Note: This function doesn't take into account whether shift has been pressed or not.
\param numkeys if non-NULL, receives the length of the returned array. \returns a pointer to an array of key states.
\threadsafety It is safe to call this function from any thread.
\since This function is available since SDL 3.2.0.
\sa SDL_PumpEvents \sa SDL_ResetKeyboard
extern SDL_DECLSPEC const bool * SDLCALL SDL_GetKeyboardState(int *numkeys)
Implementation
List<bool> sdlxGetKeyboardState() {
final result = <bool>[];
final numkeysPointer = ffi.calloc<Int32>();
final resultPointer = sdlGetKeyboardState(numkeysPointer);
if (resultPointer != nullptr) {
for (var i = 0; i < numkeysPointer.value; i++) {
result.add(resultPointer[i] != 0);
}
}
numkeysPointer.callocFree();
return result;
}