Thanks kkossev, that actually gives me an idea of how this device works. I think perhaps it needs to be initialised/reset after every time a button is pressed. For example when it is first installed it sends a payload when any button is pressed. If you reset programmatically it will send another payload - if you don't it sends nothing!
Unfortunately though all the payloads are identical with the exception of a sequence number in the data section:
BOTTOM LEFT
dev:22021-05-02 21:08:03.388 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 4100, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[41, 00]]'
dev:22021-05-02 21:08:03.377 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 4000, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[40, 00]]'
dev:22021-05-02 21:08:03.361 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 3E00, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3E, 00]]'
dev:22021-05-02 21:08:03.357 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 3F00, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3F, 00]]'
dev:22021-05-02 21:08:03.331 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 3D00, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3D, 00]]'
dev:22021-05-02 21:08:03.318 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 3C00, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3C, 00]]'
dev:22021-05-02 21:08:03.294 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 3B00, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3B, 00]]'
dev:22021-05-02 21:08:03.280 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 3A00, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3A, 00]]'
BOTTOM RIGHT
dev:22021-05-02 21:09:14.275 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 4A00, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[4A, 00]]'
dev:22021-05-02 21:09:14.271 debugMessage Map: '[raw:catchall: 0000 8021 00 00 0040 00 5360 00 00 0000 00 00 4900, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5360, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[49, 00]]'
I suspect the device isn't being initialised with the right number of buttons to enable so it always sends an event for the same button, no matter which one is pressed. Note that to pair it with the hub, you need to press specifically the bottom left button for about 15 seconds (not 10) until the whole thing starts to flash before it will pair.
I have some other generic "tuya/zigbee" sensors (contact switch, motion sensor etc) working fine and they send correct data. I'd love to get this firmware version working using a Hubitat driver because it is ubiquitous. I did a query on some that visually match on Ali Express and so far they're all TS0044 and TZ3000 devices according to the sellers. Actual product number being sold (if you want to avoid it) is ZN262259.