Fix keyboard arrow keys being sent as gamepad d-pad events

This commit is contained in:
Cameron Gutman 2017-05-04 23:00:47 -07:00
parent 0380910588
commit 35fa8f5bcc

View File

@ -574,8 +574,14 @@ public class Game extends Activity implements SurfaceHolder.Callback,
return super.onKeyDown(keyCode, event); return super.onKeyDown(keyCode, event);
} }
// Try the controller handler first boolean handled = false;
boolean handled = controllerHandler.handleButtonDown(event); if (event.getDevice() == null ||
event.getDevice().getKeyboardType() != InputDevice.KEYBOARD_TYPE_ALPHABETIC) {
// Always try the controller handler first, unless it's an alphanumeric keyboard device.
// Otherwise, controller handler will eat keyboard d-pad events.
handled = controllerHandler.handleButtonDown(event);
}
if (!handled) { if (!handled) {
// Try the keyboard handler // Try the keyboard handler
short translated = keybTranslator.translate(event.getKeyCode()); short translated = keybTranslator.translate(event.getKeyCode());
@ -607,8 +613,14 @@ public class Game extends Activity implements SurfaceHolder.Callback,
return super.onKeyUp(keyCode, event); return super.onKeyUp(keyCode, event);
} }
// Try the controller handler first boolean handled = false;
boolean handled = controllerHandler.handleButtonUp(event); if (event.getDevice() == null ||
event.getDevice().getKeyboardType() != InputDevice.KEYBOARD_TYPE_ALPHABETIC) {
// Always try the controller handler first, unless it's an alphanumeric keyboard device.
// Otherwise, controller handler will eat keyboard d-pad events.
handled = controllerHandler.handleButtonUp(event);
}
if (!handled) { if (!handled) {
// Try the keyboard handler // Try the keyboard handler
short translated = keybTranslator.translate(event.getKeyCode()); short translated = keybTranslator.translate(event.getKeyCode());