Give higher priority to key reset combination over joystick mapping.

This commit is contained in:
sorgelig
2017-12-02 12:02:53 +08:00
parent 565bf612b1
commit 65e4e41da9

54
input.c
View File

@@ -1784,6 +1784,32 @@ static void input_cb(struct input_event *ev, int dev)
// keyboard
else
{
if (!input[dev].has_kbdmap)
{
if (!FileLoadConfig(get_kbdmap_name(dev), &input[dev].kbdmap, sizeof(input[dev].kbdmap)))
{
memset(input[dev].kbdmap, 0, sizeof(input[dev].kbdmap));
}
input[dev].has_kbdmap = 1;
}
// replace MENU key by RGUI to allow using Right Amiga on reduced keyboards
// (it also disables the use of Menu for OSD)
uint16_t code = ev->code;
if (mist_cfg.key_menu_as_rgui && code == 139) code = 126;
//Keyrah v2: USB\VID_18D8&PID_0002\A600/A1200_MULTIMEDIA_EXTENSION_VERSION
int keyrah = (mist_cfg.keyrah_mode && (((((uint32_t)input[dev].vid) << 16) | input[dev].pid) == mist_cfg.keyrah_mode));
if (keyrah) code = keyrah_trans(code, ev->value);
uint32_t ps2code = get_ps2_code(code);
if (ev->value) modifier |= ps2code;
else modifier &= ~ps2code;
uint16_t reset_m = (modifier & MODMASK) >> 8;
if (code == 111) reset_m |= 0x100;
user_io_check_reset(reset_m, (keyrah && !mist_cfg.reset_combo) ? 1 : mist_cfg.reset_combo);
if(!user_io_osd_is_visible() && ((user_io_get_kbdemu() == EMU_JOY0) || (user_io_get_kbdemu() == EMU_JOY1)))
{
if (!kbd_toggle)
@@ -1865,34 +1891,6 @@ static void input_cb(struct input_event *ev, int dev)
}
}
if (!input[dev].has_kbdmap)
{
if (!FileLoadConfig(get_kbdmap_name(dev), &input[dev].kbdmap, sizeof(input[dev].kbdmap)))
{
memset(input[dev].kbdmap, 0, sizeof(input[dev].kbdmap));
}
input[dev].has_kbdmap = 1;
}
static uint16_t mod = 0;
// replace MENU key by RGUI to allow using Right Amiga on reduced keyboards
// (it also disables the use of Menu for OSD)
uint16_t code = ev->code;
if (mist_cfg.key_menu_as_rgui && code == 139) code = 126;
//Keyrah v2: USB\VID_18D8&PID_0002\A600/A1200_MULTIMEDIA_EXTENSION_VERSION
int keyrah = (mist_cfg.keyrah_mode && (((((uint32_t)input[dev].vid) << 16) | input[dev].pid) == mist_cfg.keyrah_mode));
if (keyrah) code = keyrah_trans(code, ev->value);
uint32_t ps2code = get_ps2_code(code);
if (ev->value) modifier |= ps2code;
else modifier &= ~ps2code;
uint16_t reset_m = (modifier & MODMASK) >> 8;
if (code == 111) reset_m |= 0x100;
user_io_check_reset(reset_m, (keyrah && !mist_cfg.reset_combo) ? 1 : mist_cfg.reset_combo);
user_io_kbd(code, ev->value);
return;
}