set event name/custom/flags to devnum/num/sub
| 9279 | |
| 9280 | // set event name/custom/flags to devnum/num/sub |
| 9281 | int inputdevice_set_mapping (int devnum, int num, const TCHAR *name, TCHAR *custom, uae_u64 flags, int port, int sub) |
| 9282 | { |
| 9283 | const struct inputdevice_functions *idf = getidf (devnum); |
| 9284 | const struct uae_input_device *uid = get_uid (idf, inputdevice_get_device_index (devnum)); |
| 9285 | int eid, data, portp, amask; |
| 9286 | uae_u64 flag; |
| 9287 | TCHAR ename[256]; |
| 9288 | int devindex = inputdevice_get_device_index (devnum); |
| 9289 | TCHAR *customp = NULL; |
| 9290 | |
| 9291 | if (uid == 0 || num < 0) |
| 9292 | return 0; |
| 9293 | if (name) { |
| 9294 | eid = 1; |
| 9295 | while (events[eid].name) { |
| 9296 | inputdevice_get_eventname (&events[eid], ename); |
| 9297 | if (!_tcscmp(ename, name)) |
| 9298 | break; |
| 9299 | eid++; |
| 9300 | } |
| 9301 | if (!events[eid].name) |
| 9302 | return 0; |
| 9303 | if (events[eid].allow_mask & AM_INFO) |
| 9304 | return 0; |
| 9305 | } else { |
| 9306 | eid = 0; |
| 9307 | } |
| 9308 | if (get_event_data (idf, devindex, num, &data, &customp, &flag, &portp, sub) < 0) |
| 9309 | return 0; |
| 9310 | if (data >= 0) { |
| 9311 | amask = events[eid].allow_mask; |
| 9312 | flag &= ~(ID_FLAG_AUTOFIRE_MASK | ID_FLAG_GAMEPORTSCUSTOM_MASK | IDEV_MAPPED_QUALIFIER_MASK | ID_FLAG_INVERT); |
| 9313 | if (amask & AM_AF) { |
| 9314 | flag |= (flags & IDEV_MAPPED_AUTOFIRE_SET) ? ID_FLAG_AUTOFIRE : 0; |
| 9315 | flag |= (flags & IDEV_MAPPED_TOGGLE) ? ID_FLAG_TOGGLE : 0; |
| 9316 | flag |= (flags & IDEV_MAPPED_INVERTTOGGLE) ? ID_FLAG_INVERTTOGGLE : 0; |
| 9317 | } |
| 9318 | flag |= (flags & IDEV_MAPPED_INVERT) ? ID_FLAG_INVERT : 0; |
| 9319 | flag |= (flags & IDEV_MAPPED_GAMEPORTSCUSTOM1) ? ID_FLAG_GAMEPORTSCUSTOM1 : 0; |
| 9320 | flag |= (flags & IDEV_MAPPED_GAMEPORTSCUSTOM2) ? ID_FLAG_GAMEPORTSCUSTOM2 : 0; |
| 9321 | flag |= flags & IDEV_MAPPED_QUALIFIER_MASK; |
| 9322 | flag &= ~(IDEV_MAPPED_SET_ONOFF | IDEV_MAPPED_SET_ONOFF_VAL1 | IDEV_MAPPED_SET_ONOFF_VAL2); |
| 9323 | if (amask & AM_SETTOGGLE) { |
| 9324 | flag |= (flags & IDEV_MAPPED_SET_ONOFF) ? ID_FLAG_SET_ONOFF : 0; |
| 9325 | flag |= (flags & IDEV_MAPPED_SET_ONOFF_VAL1) ? ID_FLAG_SET_ONOFF_VAL1 : 0; |
| 9326 | flag |= (flags & IDEV_MAPPED_SET_ONOFF_VAL2) ? ID_FLAG_SET_ONOFF_VAL2 : 0; |
| 9327 | } |
| 9328 | if (port >= 0) |
| 9329 | portp = port; |
| 9330 | put_event_data (idf, devindex, num, eid, custom, flag, portp, sub); |
| 9331 | return 1; |
| 9332 | } |
| 9333 | return 0; |
| 9334 | } |
| 9335 | |
| 9336 | int inputdevice_get_widget_type (int devnum, int num, TCHAR *name, size_t namesize, bool inccode) |
| 9337 | { |
no test coverage detected