diff --git a/src/config.c b/src/config.c index ef5c5f740..8e9cc28c2 100644 --- a/src/config.c +++ b/src/config.c @@ -484,6 +484,8 @@ load_input_devices(void) p = ini_section_get_string(cat, "keyboard_type", NULL); if (p != NULL) keyboard_type = keyboard_get_from_internal_name(p); + else if (strstr(machine_get_internal_name(), "pc5086")) + keyboard_type = KEYBOARD_TYPE_PC_XT; else if (machine_has_bus(machine, MACHINE_BUS_PS2_PORTS)) { if (machine_has_flags(machine, MACHINE_KEYBOARD_JIS)) keyboard_type = KEYBOARD_TYPE_PS55; diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index d7dce0dd2..5ed16fed3 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -18374,8 +18374,9 @@ machine_has_bus(int m, int bus_flags) /* TODO: Move the KBD flags to the machine table! */ if ((bus_flags & MACHINE_BUS_XT_KBD) && !(machines[m].bus_flags & MACHINE_BUS_ISA16) && - !(machines[m].bus_flags & MACHINE_BUS_PS2_PORTS)) - ret |= MACHINE_BUS_XT_KBD; + (!(machines[m].bus_flags & MACHINE_BUS_PS2_PORTS) || + !(strcmp(machine_get_internal_name(), "pc5086")))) + ret |= MACHINE_BUS_XT_KBD; #ifdef ONLY_AT_KBD_ON_AT_KBC if ((bus_flags & MACHINE_BUS_AT_KBD) && diff --git a/src/qt/qt_settingsinput.cpp b/src/qt/qt_settingsinput.cpp index 8486ffce6..d8cc7c029 100644 --- a/src/qt/qt_settingsinput.cpp +++ b/src/qt/qt_settingsinput.cpp @@ -121,10 +121,13 @@ SettingsInput::onCurrentMachineChanged(int machineId) int has_int_kbd = !!machine_has_flags(machineId, MACHINE_KEYBOARD); for (int i = 0; i < keyboard_get_ndev(); ++i) { - const auto *dev = keyboard_get_device(i); - int ikbd = (i == KEYBOARD_TYPE_INTERNAL); + const auto *dev = keyboard_get_device(i); + int ikbd = (i == KEYBOARD_TYPE_INTERNAL); - if ((ikbd != has_int_kbd) || !device_is_valid(dev, machineId)) + int pc5086_filter = (strstr(keyboard_get_internal_name(i), "ps") && + strstr(machine_get_internal_name_ex(machineId), "pc5086")); + + if ((ikbd != has_int_kbd) || !device_is_valid(dev, machineId) || pc5086_filter) continue; QString name = DeviceConfig::DeviceName(dev, keyboard_get_internal_name(i), 0);