| 9014 | } |
| 9015 | |
| 9016 | static int put_event_data (const struct inputdevice_functions *id, int devnum, int num, int eventid, TCHAR *custom, uae_u64 flags, int port, int sub) |
| 9017 | { |
| 9018 | struct uae_input_device *uid = get_uid (id, devnum); |
| 9019 | int type = id->get_widget_type (devnum, num, 0, 0); |
| 9020 | int i, ret; |
| 9021 | |
| 9022 | for (i = 0; i < MAX_INPUT_QUALIFIERS; i++) { |
| 9023 | uae_u64 mask1 = ID_FLAG_QUALIFIER1 << (i * 2); |
| 9024 | uae_u64 mask2 = mask1 << 1; |
| 9025 | if ((flags & (mask1 | mask2)) == (mask1 | mask2)) |
| 9026 | flags &= ~mask2; |
| 9027 | } |
| 9028 | if (custom && custom[0] == 0) |
| 9029 | custom = NULL; |
| 9030 | if (custom) |
| 9031 | eventid = 0; |
| 9032 | if (eventid <= 0 && !custom) |
| 9033 | flags = 0; |
| 9034 | |
| 9035 | ret = -1; |
| 9036 | if (type == IDEV_WIDGET_BUTTON || type == IDEV_WIDGET_BUTTONAXIS) { |
| 9037 | i = num - id->get_widget_first (devnum, IDEV_WIDGET_BUTTON) + ID_BUTTON_OFFSET; |
| 9038 | uid->eventid[i][sub] = eventid; |
| 9039 | uid->flags[i][sub] = flags; |
| 9040 | uid->port[i][sub] = port; |
| 9041 | xfree (uid->custom[i][sub]); |
| 9042 | uid->custom[i][sub] = custom && custom[0] != '\0' ? stripstrdup (custom) : NULL; |
| 9043 | ret = i; |
| 9044 | } else if (type == IDEV_WIDGET_AXIS) { |
| 9045 | i = num - id->get_widget_first (devnum, type) + ID_AXIS_OFFSET; |
| 9046 | uid->eventid[i][sub] = eventid; |
| 9047 | uid->flags[i][sub] = flags; |
| 9048 | uid->port[i][sub] = port; |
| 9049 | xfree (uid->custom[i][sub]); |
| 9050 | uid->custom[i][sub] = custom && custom[0] != '\0' ? stripstrdup (custom) : NULL; |
| 9051 | ret = i; |
| 9052 | } else if (type == IDEV_WIDGET_KEY) { |
| 9053 | i = num - id->get_widget_first (devnum, type); |
| 9054 | uid->eventid[i][sub] = eventid; |
| 9055 | uid->flags[i][sub] = flags; |
| 9056 | uid->port[i][sub] = port; |
| 9057 | xfree (uid->custom[i][sub]); |
| 9058 | uid->custom[i][sub] = custom && custom[0] != '\0' ? stripstrdup (custom) : NULL; |
| 9059 | ret = i; |
| 9060 | } |
| 9061 | if (ret < 0) |
| 9062 | return -1; |
| 9063 | if (uid->custom[i][sub]) |
| 9064 | uid->eventid[i][sub] = INPUTEVENT_SPC_CUSTOM_EVENT; |
| 9065 | return ret; |
| 9066 | } |
| 9067 | |
| 9068 | static int is_event_used (const struct inputdevice_functions *id, int devnum, int isnum, int isevent) |
| 9069 | { |
no test coverage detected