Some keyboard-related special casing for the PC5086, so the keyboard is locked to PC/XT but PS/2 mouse remains usable.
This commit is contained in:
@@ -484,6 +484,8 @@ load_input_devices(void)
|
|||||||
p = ini_section_get_string(cat, "keyboard_type", NULL);
|
p = ini_section_get_string(cat, "keyboard_type", NULL);
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
keyboard_type = keyboard_get_from_internal_name(p);
|
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)) {
|
else if (machine_has_bus(machine, MACHINE_BUS_PS2_PORTS)) {
|
||||||
if (machine_has_flags(machine, MACHINE_KEYBOARD_JIS))
|
if (machine_has_flags(machine, MACHINE_KEYBOARD_JIS))
|
||||||
keyboard_type = KEYBOARD_TYPE_PS55;
|
keyboard_type = KEYBOARD_TYPE_PS55;
|
||||||
|
|||||||
@@ -18374,8 +18374,9 @@ machine_has_bus(int m, int bus_flags)
|
|||||||
/* TODO: Move the KBD flags to the machine table! */
|
/* TODO: Move the KBD flags to the machine table! */
|
||||||
if ((bus_flags & MACHINE_BUS_XT_KBD) &&
|
if ((bus_flags & MACHINE_BUS_XT_KBD) &&
|
||||||
!(machines[m].bus_flags & MACHINE_BUS_ISA16) &&
|
!(machines[m].bus_flags & MACHINE_BUS_ISA16) &&
|
||||||
!(machines[m].bus_flags & MACHINE_BUS_PS2_PORTS))
|
(!(machines[m].bus_flags & MACHINE_BUS_PS2_PORTS) ||
|
||||||
ret |= MACHINE_BUS_XT_KBD;
|
!(strcmp(machine_get_internal_name(), "pc5086"))))
|
||||||
|
ret |= MACHINE_BUS_XT_KBD;
|
||||||
|
|
||||||
#ifdef ONLY_AT_KBD_ON_AT_KBC
|
#ifdef ONLY_AT_KBD_ON_AT_KBC
|
||||||
if ((bus_flags & MACHINE_BUS_AT_KBD) &&
|
if ((bus_flags & MACHINE_BUS_AT_KBD) &&
|
||||||
|
|||||||
@@ -121,10 +121,13 @@ SettingsInput::onCurrentMachineChanged(int machineId)
|
|||||||
int has_int_kbd = !!machine_has_flags(machineId, MACHINE_KEYBOARD);
|
int has_int_kbd = !!machine_has_flags(machineId, MACHINE_KEYBOARD);
|
||||||
|
|
||||||
for (int i = 0; i < keyboard_get_ndev(); ++i) {
|
for (int i = 0; i < keyboard_get_ndev(); ++i) {
|
||||||
const auto *dev = keyboard_get_device(i);
|
const auto *dev = keyboard_get_device(i);
|
||||||
int ikbd = (i == KEYBOARD_TYPE_INTERNAL);
|
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;
|
continue;
|
||||||
|
|
||||||
QString name = DeviceConfig::DeviceName(dev, keyboard_get_internal_name(i), 0);
|
QString name = DeviceConfig::DeviceName(dev, keyboard_get_internal_name(i), 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user