MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / inputdevice_set_mapping

Function inputdevice_set_mapping

src/inputdevice.cpp:9281–9334  ·  view source on GitHub ↗

set event name/custom/flags to devnum/num/sub

Source from the content-addressed store, hash-verified

9279
9280// set event name/custom/flags to devnum/num/sub
9281int 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
9336int inputdevice_get_widget_type (int devnum, int num, TCHAR *name, size_t namesize, bool inccode)
9337{

Callers 1

Calls 6

getidfFunction · 0.85
get_uidFunction · 0.85
get_event_dataFunction · 0.85
put_event_dataFunction · 0.85

Tested by

no test coverage detected