Big thread of gamepad testing

The 1.4.4 release of Defold brought an improved support for gamepads on Windows. Would you guys be able to retest your controllers on Windows and provide updated gamepads bindings?

Looks like the GDC links are dead, can you change it to the GitHub releases page?

I’ve updated the original post to link to GitHub Releases instead.

2 Likes

Here’s a mapping for PlayStation controllers. Confirmed working for Dualshock 4 and Dualshock 5. Not sure if it captures all of the available variants, so if you have a PlayStation controller please try it out and let us know if it works or not.

driver
{
    device: "Wireless Controller"
    platform: "windows"
    dead_zone: 0.2
    map { input: GAMEPAD_LSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_LSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_LSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_LSTICK_UP type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_LSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 14 }
    map { input: GAMEPAD_LTRIGGER type: GAMEPAD_TYPE_BUTTON index: 10 }
    map { input: GAMEPAD_LSHOULDER type: GAMEPAD_TYPE_BUTTON index: 8 }
    map { input: GAMEPAD_LPAD_LEFT type: GAMEPAD_TYPE_BUTTON index: 2 }
    map { input: GAMEPAD_LPAD_RIGHT type: GAMEPAD_TYPE_BUTTON index: 3 }
    map { input: GAMEPAD_LPAD_DOWN type: GAMEPAD_TYPE_BUTTON index: 1 }
    map { input: GAMEPAD_LPAD_UP type: GAMEPAD_TYPE_BUTTON index: 0 }
    map { input: GAMEPAD_RSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 2 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_RSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 2 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_RSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 5 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_RSTICK_UP type: GAMEPAD_TYPE_AXIS index: 5 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_RSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 15 }
    map { input: GAMEPAD_RTRIGGER type: GAMEPAD_TYPE_BUTTON index: 11 }
    map { input: GAMEPAD_RSHOULDER type: GAMEPAD_TYPE_BUTTON index: 9 }
    map { input: GAMEPAD_RPAD_LEFT type: GAMEPAD_TYPE_BUTTON index: 4 }
    map { input: GAMEPAD_RPAD_RIGHT type: GAMEPAD_TYPE_BUTTON index: 6 }
    map { input: GAMEPAD_RPAD_DOWN type: GAMEPAD_TYPE_BUTTON index: 5 }
    map { input: GAMEPAD_RPAD_UP type: GAMEPAD_TYPE_BUTTON index: 7 }
    map { input: GAMEPAD_START type: GAMEPAD_TYPE_BUTTON index: 13 }
    map { input: GAMEPAD_BACK type: GAMEPAD_TYPE_BUTTON index: 12 }
}
4 Likes

Also here is my Logitech F310 on mac

driver {
  device: "Logitech Dual Action"
  platform: "osx"
  dead_zone: 0.200
  map { input: GAMEPAD_LSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
  map { input: GAMEPAD_LSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
  map { input: GAMEPAD_LSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
  map { input: GAMEPAD_LSTICK_UP type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
  map { input: GAMEPAD_LSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 10 }
  map { input: GAMEPAD_LTRIGGER type: GAMEPAD_TYPE_BUTTON index: 6 }
  map { input: GAMEPAD_LSHOULDER type: GAMEPAD_TYPE_BUTTON index: 4 }
  map { input: GAMEPAD_LPAD_LEFT type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 8 }
  map { input: GAMEPAD_LPAD_RIGHT type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 2 }
  map { input: GAMEPAD_LPAD_DOWN type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 4 }
  map { input: GAMEPAD_LPAD_UP type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 1 }
  map { input: GAMEPAD_RSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 2 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
  map { input: GAMEPAD_RSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 2 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
  map { input: GAMEPAD_RSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 3 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
  map { input: GAMEPAD_RSTICK_UP type: GAMEPAD_TYPE_AXIS index: 3 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
  map { input: GAMEPAD_RSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 11 }
  map { input: GAMEPAD_RTRIGGER type: GAMEPAD_TYPE_BUTTON index: 7 }
  map { input: GAMEPAD_RSHOULDER type: GAMEPAD_TYPE_BUTTON index: 5 }
  map { input: GAMEPAD_RPAD_LEFT type: GAMEPAD_TYPE_BUTTON index: 0 }
  map { input: GAMEPAD_RPAD_RIGHT type: GAMEPAD_TYPE_BUTTON index: 2 }
  map { input: GAMEPAD_RPAD_DOWN type: GAMEPAD_TYPE_BUTTON index: 1 }
  map { input: GAMEPAD_RPAD_UP type: GAMEPAD_TYPE_BUTTON index: 3 }
  map { input: GAMEPAD_START type: GAMEPAD_TYPE_BUTTON index: 9 }
  map { input: GAMEPAD_BACK type: GAMEPAD_TYPE_BUTTON index: 8 }
}

:thinking: This is almost identical (it is missing GAMEPAD_GUIDE on index 17) to the one that already exists in the default .gamepads file.

2 Likes

Thanks. Added: https://github.com/defold/defold/commit/6f688e4862b3e0b76b9585b88ffc755fe48b41bf

1 Like

Yeah. You’re right. Didn’t even cross my mind that it was already mapped, just that it couldn’t be detected before 1.4.4 :man_facepalming:

1 Like

Is it possible to proxy or inhert a gamepad mapping? I’ve just created one for the Gamesir X2 (Expandable controller) and the only difference between it and the Android Xbox Wireless mapping is the device name

Defold doesn’t capture R2 & L2 inputs from Xbox X Controller S. I had this issue when I was playing @Alex_8BitSkull 's Bore Blast. I thought it was because the miss configuration, but I just test is with latest (1.7.0) buildins-default.gamepads and there is no action triggered (even raw). I would like to test it with gdc but it has a issue on MacOS.
Gamepad buttons are working with online gamepad testers and I’m already using it while playing games. Anyone has this issue?

1 Like

Yeah, it seems we introduced a new concept of worker threads in our graphics backend, and the gdc tool was left out of that update. I’m fixing now.
We have a PR for it now.

4 Likes

I can confirm that even gdc(macos) tool doesn’t capture L and R triggers for latest Xbox X Controller

Issue: Defold doesn't capture L & R triggers for latest Xbox Controller · Issue #8736 · defold/defold · GitHub

2 Likes

Here’s a mapping for my 8BitDo Pro 2 gamepad (android + windows):

driver {
device: "8BitDo Pro 2"
platform: "android"
dead_zone: 0.2
map { input: GAMEPAD_LSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_LSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_LSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_LSTICK_UP type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_LSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 17 }
map { input: GAMEPAD_RSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 2 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_RSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 2 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_RSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 3 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_RSTICK_UP type: GAMEPAD_TYPE_AXIS index: 3 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_RSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 18 }
map { input: GAMEPAD_LPAD_LEFT type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 8 }
map { input: GAMEPAD_LPAD_RIGHT type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 2 }
map { input: GAMEPAD_LPAD_DOWN type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 4 }
map { input: GAMEPAD_LPAD_UP type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 1 }
map { input: GAMEPAD_RPAD_UP type: GAMEPAD_TYPE_BUTTON index: 3 }
map { input: GAMEPAD_RPAD_DOWN type: GAMEPAD_TYPE_BUTTON index: 1 }
map { input: GAMEPAD_RPAD_RIGHT type: GAMEPAD_TYPE_BUTTON index: 0 }
map { input: GAMEPAD_RPAD_LEFT type: GAMEPAD_TYPE_BUTTON index: 6 }
map { input: GAMEPAD_LSHOULDER type: GAMEPAD_TYPE_BUTTON index: 4 }
map { input: GAMEPAD_RSHOULDER type: GAMEPAD_TYPE_BUTTON index: 5 }
map { input: GAMEPAD_LTRIGGER type: GAMEPAD_TYPE_BUTTON index: 8 }
map { input: GAMEPAD_RTRIGGER type: GAMEPAD_TYPE_BUTTON index: 9 }
map { input: GAMEPAD_START type: GAMEPAD_TYPE_BUTTON index: 15 }
map { input: GAMEPAD_BACK type: GAMEPAD_TYPE_BUTTON index: 16 }
map { input: GAMEPAD_GUIDE type: GAMEPAD_TYPE_BUTTON index: 19 }
}

driver {
device: "8BitDo Pro 2"
platform: "windows"
dead_zone: 0.2
map { input: GAMEPAD_LPAD_LEFT type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 8 }
map { input: GAMEPAD_LPAD_RIGHT type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 2 }
map { input: GAMEPAD_LPAD_DOWN type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 4 }
map { input: GAMEPAD_LPAD_UP type: GAMEPAD_TYPE_HAT index: 0 hat_mask: 1 }
map { input: GAMEPAD_START type: GAMEPAD_TYPE_BUTTON index: 15 }
map { input: GAMEPAD_BACK type: GAMEPAD_TYPE_BUTTON index: 14 }
map { input: GAMEPAD_RPAD_UP type: GAMEPAD_TYPE_BUTTON index: 7 }
map { input: GAMEPAD_RPAD_DOWN type: GAMEPAD_TYPE_BUTTON index: 5 }
map { input: GAMEPAD_RPAD_RIGHT type: GAMEPAD_TYPE_BUTTON index: 4 }
map { input: GAMEPAD_RPAD_LEFT type: GAMEPAD_TYPE_BUTTON index: 8 }
map { input: GAMEPAD_LSHOULDER type: GAMEPAD_TYPE_BUTTON index: 10 }
map { input: GAMEPAD_RSHOULDER type: GAMEPAD_TYPE_BUTTON index: 11 }
map { input: GAMEPAD_LTRIGGER type: GAMEPAD_TYPE_BUTTON index: 12 }
map { input: GAMEPAD_RTRIGGER type: GAMEPAD_TYPE_BUTTON index: 13 }
map { input: GAMEPAD_GUIDE type: GAMEPAD_TYPE_BUTTON index: 16 }
map { input: GAMEPAD_LSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_LSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_LSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_LSTICK_UP type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_LSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 17 }
map { input: GAMEPAD_RSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 3 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_RSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 3 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_RSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 4 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_RSTICK_UP type: GAMEPAD_TYPE_AXIS index: 4 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
map { input: GAMEPAD_RSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 18 }
}

This defold project is another variation of mapping for gamepads:
GAMEPAD_TESTER.zip (92.3 KB)

It’s assembled from two projects:

6 Likes

Could you pls create a PR similar to Added Linux layouts for 2 gamepads by Domarius · Pull Request #8605 · defold/defold · GitHub ?

2 Likes

Here is a gamepad mapping for my Logitech Dual Action on Windows.

driver {
    device: "Logitech Dual Action"
    platform: "windows"
    dead_zone: 0.200
    map { input: GAMEPAD_LSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_LSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 0 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_LSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_LSTICK_UP type: GAMEPAD_TYPE_AXIS index: 1 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_LSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 14 }
    map { input: GAMEPAD_LTRIGGER type: GAMEPAD_TYPE_BUTTON index: 10 }
    map { input: GAMEPAD_LSHOULDER type: GAMEPAD_TYPE_BUTTON index: 8 }
    map { input: GAMEPAD_LPAD_LEFT type: GAMEPAD_TYPE_BUTTON index: 2 }
    map { input: GAMEPAD_LPAD_RIGHT type: GAMEPAD_TYPE_BUTTON index: 3 }
    map { input: GAMEPAD_LPAD_DOWN type: GAMEPAD_TYPE_BUTTON index: 1 }
    map { input: GAMEPAD_LPAD_UP type: GAMEPAD_TYPE_BUTTON index: 0 }
    map { input: GAMEPAD_RSTICK_LEFT type: GAMEPAD_TYPE_AXIS index: 2 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_RSTICK_RIGHT type: GAMEPAD_TYPE_AXIS index: 2 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_RSTICK_DOWN type: GAMEPAD_TYPE_AXIS index: 3 mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_RSTICK_UP type: GAMEPAD_TYPE_AXIS index: 3 mod { mod: GAMEPAD_MODIFIER_NEGATE } mod { mod: GAMEPAD_MODIFIER_CLAMP } }
    map { input: GAMEPAD_RSTICK_CLICK type: GAMEPAD_TYPE_BUTTON index: 15 }
    map { input: GAMEPAD_RTRIGGER type: GAMEPAD_TYPE_BUTTON index: 11 }
    map { input: GAMEPAD_RSHOULDER type: GAMEPAD_TYPE_BUTTON index: 9 }
    map { input: GAMEPAD_RPAD_LEFT type: GAMEPAD_TYPE_BUTTON index: 4 }
    map { input: GAMEPAD_RPAD_RIGHT type: GAMEPAD_TYPE_BUTTON index: 6 }
    map { input: GAMEPAD_RPAD_DOWN type: GAMEPAD_TYPE_BUTTON index: 5 }
    map { input: GAMEPAD_RPAD_UP type: GAMEPAD_TYPE_BUTTON index: 7 }
    map { input: GAMEPAD_START type: GAMEPAD_TYPE_BUTTON index: 13 }
    map { input: GAMEPAD_BACK type: GAMEPAD_TYPE_BUTTON index: 12 }
}

Thanks! Added: Update default.gamepads · defold/defold@76a5a87 · GitHub

2 Likes

Here is a gamepad mapping for the Retroid Pocket 4 Pro

driver {
  device: "Retroid Pocket Controller"
  platform: "android"
  dead_zone: 0.2
  map {
    input: GAMEPAD_LSTICK_LEFT
    type: GAMEPAD_TYPE_AXIS
    index: 0
    mod {
      mod: GAMEPAD_MODIFIER_NEGATE
    }
    mod {
      mod: GAMEPAD_MODIFIER_CLAMP
    }
    hat_mask: 0
  }
  map {
    input: GAMEPAD_LSTICK_RIGHT
    type: GAMEPAD_TYPE_AXIS
    index: 0
    mod {
      mod: GAMEPAD_MODIFIER_CLAMP
    }
    hat_mask: 0
  }
  map {
    input: GAMEPAD_LSTICK_DOWN
    type: GAMEPAD_TYPE_AXIS
    index: 1
    mod {
      mod: GAMEPAD_MODIFIER_CLAMP
    }
    hat_mask: 0
  }
  map {
    input: GAMEPAD_LSTICK_UP
    type: GAMEPAD_TYPE_AXIS
    index: 1
    mod {
      mod: GAMEPAD_MODIFIER_NEGATE
    }
    mod {
      mod: GAMEPAD_MODIFIER_CLAMP
    }
    hat_mask: 0
  }
  map {
    input: GAMEPAD_LSTICK_CLICK
    type: GAMEPAD_TYPE_BUTTON
    index: 17
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RSTICK_LEFT
    type: GAMEPAD_TYPE_AXIS
    index: 2
    mod {
      mod: GAMEPAD_MODIFIER_NEGATE
    }
    mod {
      mod: GAMEPAD_MODIFIER_CLAMP
    }
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RSTICK_RIGHT
    type: GAMEPAD_TYPE_AXIS
    index: 2
    mod {
      mod: GAMEPAD_MODIFIER_CLAMP
    }
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RSTICK_DOWN
    type: GAMEPAD_TYPE_AXIS
    index: 3
    mod {
      mod: GAMEPAD_MODIFIER_CLAMP
    }
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RSTICK_UP
    type: GAMEPAD_TYPE_AXIS
    index: 3
    mod {
      mod: GAMEPAD_MODIFIER_NEGATE
    }
    mod {
      mod: GAMEPAD_MODIFIER_CLAMP
    }
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RSTICK_CLICK
    type: GAMEPAD_TYPE_BUTTON
    index: 18
    hat_mask: 0
  }
  map {
    input: GAMEPAD_LPAD_LEFT
    type: GAMEPAD_TYPE_AXIS
    index: 6
    mod {
      mod: GAMEPAD_MODIFIER_NEGATE
    }
    hat_mask: 16
  }
  map {
    input: GAMEPAD_LPAD_RIGHT
    type: GAMEPAD_TYPE_AXIS
    index: 6
    hat_mask: 16
  }
  map {
    input: GAMEPAD_LPAD_DOWN
    type: GAMEPAD_TYPE_AXIS
    index: 7
    hat_mask: 15
  }
  map {
    input: GAMEPAD_LPAD_UP
    type: GAMEPAD_TYPE_AXIS
    index: 7
    mod {
      mod: GAMEPAD_MODIFIER_NEGATE
    }
    hat_mask: 15
  }
  map {
    input: GAMEPAD_RPAD_UP
    type: GAMEPAD_TYPE_BUTTON
    index: 3
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RPAD_DOWN
    type: GAMEPAD_TYPE_BUTTON
    index: 1
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RPAD_RIGHT
    type: GAMEPAD_TYPE_BUTTON
    index: 0
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RPAD_LEFT
    type: GAMEPAD_TYPE_BUTTON
    index: 6
    hat_mask: 0
  }
  map {
    input: GAMEPAD_LSHOULDER
    type: GAMEPAD_TYPE_BUTTON
    index: 4
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RSHOULDER
    type: GAMEPAD_TYPE_BUTTON
    index: 5
    hat_mask: 0
  }
  map {
    input: GAMEPAD_LTRIGGER
    type: GAMEPAD_TYPE_BUTTON
    index: 8
    hat_mask: 0
  }
  map {
    input: GAMEPAD_RTRIGGER
    type: GAMEPAD_TYPE_BUTTON
    index: 9
    hat_mask: 0
  }
  map {
    input: GAMEPAD_START
    type: GAMEPAD_TYPE_BUTTON
    index: 15
    hat_mask: 0
  }
  map {
    input: GAMEPAD_BACK
    type: GAMEPAD_TYPE_BUTTON
    index: 17
    hat_mask: 0
  }
}```

Thanks. Added: Added Retroid Pocket 4 Pro · defold/defold@643cc95 · GitHub

Hi, I am posting for the PS4 controller “DUALSHOCK 4 Wireless Controller” for macOS, here is the bindings:
macos-dualshock.txt (2.3 KB)