Merge pull request #1541 from reicast/fh/dpad-fix

Avoid opposite dpad buttons being both down. Ignore android key repeats
This commit is contained in:
flyinghead 2019-04-05 15:42:34 +02:00 committed by GitHub
commit 7e11e7aff6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 47 additions and 13 deletions

View File

@ -51,7 +51,39 @@ bool GamepadDevice::gamepad_btn_input(u32 code, bool pressed)
if (key < 0x10000) if (key < 0x10000)
{ {
if (pressed) if (pressed)
{
kcode[_maple_port] &= ~(u16)key; kcode[_maple_port] &= ~(u16)key;
// Avoid two opposite dpad keys being pressed simultaneously
switch (key)
{
case DC_DPAD_UP:
kcode[_maple_port] |= (u16)DC_DPAD_DOWN;
break;
case DC_DPAD_DOWN:
kcode[_maple_port] |= (u16)DC_DPAD_UP;
break;
case DC_DPAD_LEFT:
kcode[_maple_port] |= (u16)DC_DPAD_RIGHT;
break;
case DC_DPAD_RIGHT:
kcode[_maple_port] |= (u16)DC_DPAD_LEFT;
break;
case DC_DPAD2_UP:
kcode[_maple_port] |= (u16)DC_DPAD2_DOWN;
break;
case DC_DPAD2_DOWN:
kcode[_maple_port] |= (u16)DC_DPAD2_UP;
break;
case DC_DPAD2_LEFT:
kcode[_maple_port] |= (u16)DC_DPAD2_RIGHT;
break;
case DC_DPAD2_RIGHT:
kcode[_maple_port] |= (u16)DC_DPAD2_LEFT;
break;
default:
break;
}
}
else else
kcode[_maple_port] |= (u16)key; kcode[_maple_port] |= (u16)key;
} }

View File

@ -228,6 +228,7 @@ public abstract class BaseGLActivity extends Activity implements ActivityCompat.
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getRepeatCount() == 0) {
if (keyCode == KeyEvent.KEYCODE_BACK) { if (keyCode == KeyEvent.KEYCODE_BACK) {
if (!JNIdc.guiIsOpen()) { if (!JNIdc.guiIsOpen()) {
showMenu(); showMenu();
@ -246,6 +247,7 @@ public abstract class BaseGLActivity extends Activity implements ActivityCompat.
return showMenu(); return showMenu();
} }
} }
}
return super.onKeyDown(keyCode, event); return super.onKeyDown(keyCode, event);
} }