diff --git a/gamecontroller_db.cpp b/gamecontroller_db.cpp index 7e16adc..fce2518 100644 --- a/gamecontroller_db.cpp +++ b/gamecontroller_db.cpp @@ -195,12 +195,14 @@ static bool parse_mapping_string(char *map_str, char *guid, int dev_fd, uint32_t uint16_t abs_cnt = 0; bzero(btn_map, sizeof(btn_map)); bzero(abs_map, sizeof(abs_map)); + printf("Gamecontrollerdb: mapping buttons for %s ", guid); if (ioctl(dev_fd, EVIOCGBIT(EV_KEY, sizeof(keybits)), keybits) >= 0) { for (int i = BTN_JOYSTICK; i < KEY_MAX; i++) { if (test_bit(i, keybits)) { + printf("b%d->%d ", btn_cnt, i); btn_map[btn_cnt] = i; btn_cnt++; } @@ -210,13 +212,16 @@ static bool parse_mapping_string(char *map_str, char *guid, int dev_fd, uint32_t { if (test_bit(i, keybits)) { + printf("b%d -> %d ", btn_cnt, i); btn_map[btn_cnt] = i; btn_cnt++; } } + printf("\n"); } + printf("Gamecontrollerdb: mapping analog axes for %s ", guid); if (ioctl(dev_fd, EVIOCGBIT(EV_ABS, sizeof(absbits)), absbits) >= 0) { //The "correct" way is to test all the way to ABS_MAX and skip any hats the device has. @@ -226,11 +231,23 @@ static bool parse_mapping_string(char *map_str, char *guid, int dev_fd, uint32_t { if (test_bit(i, absbits)) { + printf("a%d->%d ", abs_cnt, i); abs_map[abs_cnt] = i; abs_cnt++; } } + + //Just for debugging purposes... + for (int i = ABS_HAT0X; i < ABS_MAX; i++) + { + if (test_bit(i, absbits)) + { + printf("(debug)a%d->%d ", abs_cnt, i); + abs_cnt++; + } + } } + printf("\n"); } char l_btn[20] = {}; @@ -321,6 +338,7 @@ bool read_controller_map_from_file(char *fname, char *guid, int dev_fd, uint32_t printf("Gamecontrollerdb: searching for GUID %s in file %s\n", guid, fname); while ((line = FileReadLine(&reader))) { + if (line[0] == '#') continue; const char *gcom = strchr(line, ','); if (!strncasecmp(line, guid, gcom-line)) { diff --git a/input.cpp b/input.cpp index 03fb901..90f8919 100644 --- a/input.cpp +++ b/input.cpp @@ -2288,7 +2288,7 @@ static void input_cb(struct input_event *ev, struct input_absinfo *absinfo, int { if (!load_map(get_map_name(dev, 1), &input[dev].mmap, sizeof(input[dev].mmap))) { - if (!gcdb_map_for_controller(input[dev].bustype, input[dev].vid, input[dev].pid, input[dev].version, pool[dev].fd, input[dev].mmap)) + if (!gcdb_map_for_controller(input[sub_dev].bustype, input[sub_dev].vid, input[sub_dev].pid, input[sub_dev].version, pool[sub_dev].fd, input[dev].mmap)) { memset(input[dev].mmap, 0, sizeof(input[dev].mmap)); memcpy(input[dev].mmap, def_mmap, sizeof(def_mmap));