I have two issues right now. The first is that isKeyDown() will return true if the game window loses focus while they key in question is down, even after returning to the game and no longer holding the key down. In my particular case, this makes it so that if the game is alt+tabbed out of and brought back up, pressing enter will switch between fullscreen and windowed mode (when it should be alt+enter). They alt key returns to normal functionality afterwards.
The second issue stems from trying to fix the first. I was attempting to check the container with hasFocus(), then destroy() and create() the Keyboard once it came back into focus. This only seemed to work in windowed mode. When investigating, I found that hasFocus() always returns true in fullscreen mode, whether alt+tabbed or not.
Here are the relevant areas of the update() function:
public void update(GameContainer container, int delta) throws SlickException
System.out.println("Container does not have focus"); //Does not print when alt+tabbed in fullscreen, does in windowed
Input input = container.getInput();
if(input.isKeyDown(Input.KEY_LALT) || input.isKeyDown(Input.KEY_RALT))
Vars.fullscreen = !Vars.fullscreen;
If anyone can help me with these issues, it'd be greatly appreciated. Either getting hasFocus() to work properly with fullscreen enabled or forcing a key release on LALT and RALT could help, but I haven't been able to figure out how to do these things.
Thanks for reading.