diff --git a/gamecontrollerdb.txt b/gamecontrollerdb.txt index a6d2ea5..99a0482 100644 --- a/gamecontrollerdb.txt +++ b/gamecontrollerdb.txt @@ -1,3 +1,4 @@ +default,Default Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3, 0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),platform:Linux,a:b0,b:b1,x:b2,y:b3,start:b7,back:b6,guide:b8,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,lefttrigger:a5,righttrigger:a4,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a2,righty:a3, 0300000000f000000300000000010000,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux, 0300000000f00000f100000000010000,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux, diff --git a/src/input/evdev.c b/src/input/evdev.c index 1330d00..2dcb628 100644 --- a/src/input/evdev.c +++ b/src/input/evdev.c @@ -441,21 +441,26 @@ void evdev_create(const char* device, struct mapping* mappings, bool verbose) { for (int i = 0; i < 16; i++) buf += sprintf(buf, "%02x", ((unsigned char*) guid)[i]); + struct mapping* default_mapping = NULL; while (mappings != NULL) { if (strncmp(str_guid, mappings->guid, 32) == 0) { if (verbose) printf("Detected %s (%s) on %s\n", mappings->name, str_guid, device); break; - } + } else if (strncmp("default", mappings->guid, 32) == 0) + default_mapping = mappings; + mappings = mappings->next; } bool is_keyboard = libevdev_has_event_code(evdev, EV_KEY, KEY_Q); bool is_mouse = libevdev_has_event_type(evdev, EV_REL) || libevdev_has_event_code(evdev, EV_KEY, BTN_LEFT); - if (mappings == NULL && !(is_keyboard || is_mouse)) + if (mappings == NULL && !(is_keyboard || is_mouse)) { fprintf(stderr, "No mapping available for %s (%s)\n", device, str_guid); + mappings = default_mapping; + } int dev = numDevices; numDevices++;