static int input_device_function(fs_emu_menu_item *menu_item, void **result_data) { int port = fs_emu_menu_item_get_idata(menu_item); int index = port & 0xff; port = port >> 8; if (index == 255) { fs_log("[menu] port %d set device to \"%s\"\n", port, ""); set_input_port(port, "", 0); } #if 0 else if (index == 254) { fs_log("[menu] port %d set device to \"%s\"\n", port, "MOUSE"); set_input_port(port, "MOUSE", 1); } else if (index == 253) { fs_log("[menu] port %d set device to \"%s\"\n", port, "KEYBOARD"); set_input_port(port, "KEYBOARD", 1); } #endif else { fs_emu_input_device device; if (!fs_ml_input_device_get(index, &device)) { return FS_EMU_MENU_RESULT_NONE; } fs_log("[menu] port %d set device to %s\n", port, device.name); set_input_port(port, device.name, 1); } fs_uae_reconfigure_input_ports_host(); return FS_EMU_MENU_RESULT_BACK; }
static void change_port_device_mode(int data) { int modes = INPUTEVENT_AMIGA_JOYPORT_MODE_0_LAST - INPUTEVENT_AMIGA_JOYPORT_MODE_0_NONE + 1; int port = data / modes; int mode = data % modes; if (port >= 0 && port < FS_UAE_NUM_INPUT_PORTS) { g_fs_uae_input_ports[port].mode = mode; g_fs_uae_input_ports[port].new_mode = mode; // The fifth port isn't an Amiga port, but rather a fake // port used with custom input mapping only if (port < 4) { amiga_set_joystick_port_mode(port, mode); } fs_uae_reconfigure_input_ports_host(); fs_emu_menu_update_current(); } }
static int input_type_function(fs_emu_menu_item *menu_item, void **result_data) { int port = fs_emu_menu_item_get_idata(menu_item); int mode = port & 0xff; port = port >> 8; if (port < 4) { fs_log("[menu] port %d set mode to %d\n", port, mode); g_fs_uae_input_ports[port].new_mode = mode; fs_uae_reconfigure_input_ports_amiga(); } else { // this is set directly, locally, for custom joystick ("port 4") g_fs_uae_input_ports[port].mode = mode; g_fs_uae_input_ports[port].new_mode = mode; fs_uae_reconfigure_input_ports_host(); } return FS_EMU_MENU_RESULT_BACK; }
static void select_port_0_device(int data) { printf("--> device index %d\n", data); int port = 0; if (data == 9) { // 9 is currently a hack to indicate the local mouse g_fs_uae_input_ports[port].mode = AMIGA_JOYPORT_MOUSE; g_fs_uae_input_ports[port].new_mode = AMIGA_JOYPORT_MOUSE; strcpy(g_fs_uae_input_ports[port].device, "MOUSE"); amiga_set_joystick_port_mode(port, AMIGA_JOYPORT_MOUSE); // FIXME: not a warning, rather a notification fs_emu_warning(_("Port 0: %s"), _("Mouse")); } else { int count = 0; int new_mode = AMIGA_JOYPORT_DJOY; if (g_fs_uae_amiga_model == MODEL_CD32) { new_mode = AMIGA_JOYPORT_CD32JOY; } fs_emu_input_device *devices = fs_emu_get_input_devices(&count); if (data < count) { g_fs_uae_input_ports[port].mode = new_mode; g_fs_uae_input_ports[port].new_mode = new_mode; uae_strlcpy(g_fs_uae_input_ports[port].device, devices[data].name, sizeof(g_fs_uae_input_ports[port].device)); amiga_set_joystick_port_mode(port, new_mode); // FIXME: not a warning, rather a notification fs_emu_warning(_("Port 0: %s"), devices[data].name); } } fs_uae_reconfigure_input_ports_host(); fs_emu_menu_update_current(); //fs_emu_get_input_devices() //g_fs_uae_input_ports[port].mode = mode; //amiga_set_joystick_port_mode(port, mode); //g_fs_uae_input_ports[port].new_mode = mode; //fs_uae_reconfigure_input_ports_host(); //fs_emu_menu_update_current(); }