Using MonoGame on DX template, KeyboardState ks = Keyboard.GetState()
in Game.Update override SUCCESSFULLY get updates to ks.CapsLock
and ks.GetPressedKeys()
…
Trying to do the equivalent in a custom class (not inherited from Game) in a project NOT built using a MonoGame template.
REASON: That’s the way this code was written years ago.
[I’ll change to a standard approach if I have to, but there should be some easy way to get this existing code to work.]
In my equivalent to Update, I call FrameworkDispatcher.Update()
.
(If I don’t, not surprisingly, KeyboardState never changes at all.)
VB code (verified is called many times per second, by incrementing a counter variable):
FrameworkDispatcher.Update()
Dim ks As KeyboardState = Keyboard.GetState
Dim keysN As Keys() = ks.GetPressedKeys()
If keysN.Length > 0 OrElse ks.CapsLock Then
Test()
End If
Works: updates to ks.CapsLock
. <-- proving that SOME updating is occurring.
Doesn’t work: NO updates to ks.GetPressedKeys() - always returns an empty array.
If I put a breakpoint on line Test()
, then while holding “W”, press “CapsLock”,
I can examine the internal array and see that the keys all have value 0.
Q: Is there something I need to do early on, to initialize the keyboard input?
Or something else I need to do in addition to FrameworkDispatcher.Update()
?