# Game Controller main interface

The main interface to use the Game Controller library.

## Summary

| ### Enumerations ||
|---|---|
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga48fec244cdb5a11219a6bf1e5a9ad8ee{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga48fec244cdb5a11219a6bf1e5a9ad8eeaaae7558f75d43cefba3997bc68bd05e2 = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga48fec244cdb5a11219a6bf1e5a9ad8eea2f78e3ce65ed5c2421b524ee06fb769e = 1, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga48fec244cdb5a11219a6bf1e5a9ad8eea779f74227b1ac848d44d44c8ad6da424 = 2, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga48fec244cdb5a11219a6bf1e5a9ad8eea977e0008350fd9be5a77808010194c96 = 3, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga48fec244cdb5a11219a6bf1e5a9ad8eeae56501fbfcb6bc8bfc2ed825eae7fb56 = 4 }` | enumBattery status of a controller. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga7a825e8cf8b6c1b79f3775b5e478bc22{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22afd6f135ac730375ab72d53c7ad290163 = (1U << 0), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a559367327cce1c57e44bf8c674642fa7 = (1U << 1), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a46d0a083934c769571468eb0d0fc009c = (1U << 2), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22ab27e55efcd3a602c599f4bf6bed3c8ab = (1U << 3), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a318228122716f68f1257d2ef2e4d2d07 = (1U << 4), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a3765853c29723b6a4b2b4fcf9167a4c1 = (1U << 5), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a05f64af1f596a087513940495d49d49d = (1U << 6), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a31838799891a4594088eb0c557fbea91 = (1U << 7), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a683b1a3d4ef5d07720723be49fdb8bde = (1U << 8), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a4f227611acde44eff05d1e8f706696a8 = (1U << 9), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22add9de84ad235693eb0e9af017abf4968 = (1U << 10), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a1e8965bae5bc9f46f8d07291c7c40ae3 = (1U << 11), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a8a7fa8970ab6b52278e485e69df3f026 = (1U << 12), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a3d5cb597b991bce2b0757f0cdb2fa0ba = (1U << 13), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22ad8373bee873fc3c947608f9c9e14fae9 = (1U << 14), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22ab67f22a1bc16b88404bef1b600ae696f = (1U << 15), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a7ae270f2458e7d7d034d3b92bbc74590 = (1U << 16), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22aae36aee1dad019f26fc29d05bd81eac8 = (1U << 17), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a228dc169d0c368571e7acfeb274cd76d = (1U << 18), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22aa2ca9d8f3f599ae2c1e63333fefd4105 = (1U << 19), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22acd3b36a02282e9f4ef292fed5512844c = (1U << 20), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22a3d76e690bb8121feb99b7638a8b91285 = (1U << 21), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga7a825e8cf8b6c1b79f3775b5e478bc22ad210ef92174d018081135975d16a2ca1 = 22 }` | enumPaddleboat controller buttons defined as bitmask values. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga8487f8a48c622b0b4e47885836b18ee8{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga8487f8a48c622b0b4e47885836b18ee8a86ec330e9a3aa63c5d637ad14d545e0a = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga8487f8a48c622b0b4e47885836b18ee8a86de8ae40f4314600aad0b1541a93061 = 1, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga8487f8a48c622b0b4e47885836b18ee8ae44487a9dc57e573a3f4ca12e9dc0e3c = 2, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga8487f8a48c622b0b4e47885836b18ee8a851970ac54cbc95494b019b0e4c6932e = 3, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga8487f8a48c622b0b4e47885836b18ee8a44e4bf708c39f1acddf18d2480c139e4 = 3 }` | enumThe button layout and iconography of the controller buttons. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa82fd354ffbbca9912915769b2d46f16{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggaa82fd354ffbbca9912915769b2d46f16a85f1f5839f86339126de588d10ead486 = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggaa82fd354ffbbca9912915769b2d46f16a1dc2dfab6466ff4aa128f072adfb3018 = 1, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggaa82fd354ffbbca9912915769b2d46f16a45144fb6b165868c4ec38d785685a7a9 = 2, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggaa82fd354ffbbca9912915769b2d46f16a29b5ea9afd5b1905767d3c2735f4e3d3 = 3 }` | enumCurrent status of a controller (at a specified controller index) |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga4aae6ca7e3c69de2f9bd7725f644047d{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047da34511cd3334cd56615d49e01941e6981 = (0x0000000010), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047da8c30b79d7161e7dd85a45aa7beac2b7c = (0x00400000), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047da741565b3721e64d0b23caed69a3d72a8 = (0x00800000), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047da5ecf3cdddf858337e0762143e6a039a1 = (0x01000000), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047dac2739ee9368d17768b929016098b512b = (0x02000000), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047daac8fd172702360ce31e45b576b713b9b = (0x04000000), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047daa89ac5639f2a7aa15b24bb3de2d5f0f0 = (0x08000000), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047da6294e75a2df1ec27f07a7ff25803d6aa = (0x10000000), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047da9219386483cf8953cd1493745c7afe71 = (0x20000000), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga4aae6ca7e3c69de2f9bd7725f644047da470b97ac181c9eaeaf7c26d3f53e6331 = (0x40000000) }` | enumPaddleboat controller device feature flags as bitmask values AND against `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` to determine feature availability. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382ac84ade8bc1d9322a3f3b2b0c48bb625b = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382a78ef742fb6802fd504013f736e180e50 = -2000, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382a74c11c0c64edd0c69f9c85737d20ed59 = -2001, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382a041794c5df7ac0c12b1d46ff0cb7be27 = -2002, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382a08acf79968efd84a78fdf92eb52893e3 = -2003, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382ad20a0ba1e6b027cc7381fc544b70d033 = -2004, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382a279f5500cdf16b17579107c7d4444b94 = -2005, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382a46c2579516c6314a749b55f5ffc4775f = -2006, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382a8cd3d2d29c9a29674e8d8899d7c4da1f = -2007, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382a534309546421c082cc2fb0520ac61b67 = -2008, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382adca43e0be3c2b6fe3114ca4718b76d8c = -2009, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga79127c94fada4ed75537d0632c2fd382a648e4aaeaf55a6562f0e1b11309115cb = -2010 }` | enumPaddleboat error code results. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6d1244a9e07ade1e50f9b2fe3f347342{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga6d1244a9e07ade1e50f9b2fe3f347342a0bbc796f40951054c5deb4a108b28d24 = 0xFE, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga6d1244a9e07ade1e50f9b2fe3f347342aad0f2d91f8d25432e8edc426d2692e1b = 0xFFFE }` | enumSpecial constants to specify an axis or axis button mapping is ignored by the controller. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gac9566c4ed0796dc8d041a3acf53ec23a{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggac9566c4ed0796dc8d041a3acf53ec23aa70b140a35025b8a89d6bf566ca7492c4 = 0xFFFE }` | enumSpecial constant to specify a button is ignored by the controller. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab2325b0a3e7ffa306a9e0c2132a1295a{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab2325b0a3e7ffa306a9e0c2132a1295aa828c3149ba128161fb2ed4c0cb9f18a1 = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab2325b0a3e7ffa306a9e0c2132a1295aa8947fb26d3fe6ca46409f436a1d1e658 = (0x00000001), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab2325b0a3e7ffa306a9e0c2132a1295aa7fbabb81a1a19e5dccf470e088491795 = (0x00000002) }` | enumBitmask values to use with [Paddleboat_getIntegratedMotionSensorFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa5f8501f7cf22cc5ec7b24deb13276af) and [Paddleboat_setMotionDataCallbackWithIntegratedFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga3b727602247161b234b63e937fbbe43c) Bitmask values represent integrated sensor types on the main device instead of a controller device. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gafcde877b66efebe1b7bcfcd37ac76361{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggafcde877b66efebe1b7bcfcd37ac76361a9ed0c8df91d58954919885fdf554db33 = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggafcde877b66efebe1b7bcfcd37ac76361a161e52a9888b6565bb4215b1b3e9ab9c = 1 }` | enumThe type of light being specified by a call to [Paddleboat_setControllerLight](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaaf5b5a64675e078456de0e260db8190b). |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga371d660c55a9115a3c799b869baf13dc{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dca0e7d38986ebdf7a1900d0b2791e7da6e = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dcae625eab8ded9cd44a19b7009e2257fed, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dcaa9f92441c1fcf8aec5a5317ab48e59d1, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dcad1ea75ab57212eb98d3d557c4ccae60f, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dcaafbfcc62fb7a5940b7dd42cc6feae17b, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dcac9a0b943a92547b7ff10b5e2e76c1fcb, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dca6e321b1d80fdfe5dc490e5e3e42327e8, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dcae93cc3105838626bc515bd2f66b71efd, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dca04c24694715c75b2679b0de28d06b7ff, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dcabb0118b8b12a61ef161a60fcb9e4287c, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga371d660c55a9115a3c799b869baf13dca04aecac23d5cbce31a37f8c06da2e3a4 = 10 }` | enumPaddleboat axis mapping table axis order. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga250dea5a870739cb61fc47aaf3ea1440{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga250dea5a870739cb61fc47aaf3ea1440ae15c6bc6d9b8dfe25b46165836cdb310 = (0x40000000) }` | enumBitmask flags to use with [Paddleboat_getIntegratedMotionSensorFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa5f8501f7cf22cc5ec7b24deb13276af) and [Paddleboat_setMotionDataCallbackWithIntegratedFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga3b727602247161b234b63e937fbbe43c) Flag values represent integrated sensor types on the main device instead of a controller device. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gabd0cfc0f4ef78f419f69d9409c74960a{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggabd0cfc0f4ef78f419f69d9409c74960aa75ead702d747316b4b4f2fceb4fac2b4 = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggabd0cfc0f4ef78f419f69d9409c74960aa2c007cbd3ccf67f0ea02d3000c927858 = 1 }` | enumThe type of motion data being reported in a [Paddleboat_Motion_Data](https://developer.android.com/reference/games/game-controller/struct/paddleboat-motion-data#struct_paddleboat___motion___data) structure. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gad68987f966314bcf6611f4741340d35d{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggad68987f966314bcf6611f4741340d35dae091f0e8a0ae8c883381c5fcac99f3b4 = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggad68987f966314bcf6611f4741340d35da03b8f13cff497dc085ea5d13c2eaa9de = 1, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggad68987f966314bcf6611f4741340d35da3b481fbf9c070e76877419824d29f18a }` | enumThe status of the mouse device. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab0d0a17784385ed56f8023492aa51588{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab0d0a17784385ed56f8023492aa51588a0e06fb5958456069c8a52abdfc0dcee4 = (1U << 0), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab0d0a17784385ed56f8023492aa51588a1f456dfd6a3d7683512e1b8cddce2b1b = (1U << 1), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab0d0a17784385ed56f8023492aa51588ad8a47741da1a1d481ae05ca485668b45 = (1U << 2), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab0d0a17784385ed56f8023492aa51588a84199a3c94ac058b56802bcbe05d1ae4 = (1U << 3), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab0d0a17784385ed56f8023492aa51588aae0d96d51138b4bfad8e7dd207cec649 = (1U << 4), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab0d0a17784385ed56f8023492aa51588a1d4e2b46b87fea6a7b1b4dac5aedf52a = (1U << 5), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab0d0a17784385ed56f8023492aa51588aae0936884a428f3e6bd0d624f59019de = (1U << 6), https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ggab0d0a17784385ed56f8023492aa51588ac5f65869ce414058694b4d66de00606c = (1U << 7) }` | enumPaddleboat mouse buttons as bitmask values AND against `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` to determine button status. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6582cbba5c0b2375f11be15103c8c372{ https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga6582cbba5c0b2375f11be15103c8c372aa237f3b73a2e0ea5d4ec408e50ac122a = 0, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gga6582cbba5c0b2375f11be15103c8c372a8449fac63677f03438072a5c6e77640a }` | enumThe addition mode to use when passing new controller mapping data to [Paddleboat_addControllerRemapData](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaea65b15f017a80c4a72ed370b78c497b). |

| ### Typedefs ||
|---|---|
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga8f52523cd08ca09b93ffb83112d2777c)(const int32_t controllerIndex, const Paddleboat_ControllerStatus controllerStatus, void *userData)` | typedef `void(*` Signature of a function that can be passed to [Paddleboat_setControllerStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab0049f498344bd6fd3700f861d7ee89d) to receive information about controller connections and disconnections. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga99168c6362179c43360021b99cb9bf71` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-battery#struct_paddleboat___controller___battery` A structure that describes the current battery state of a controller. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gac13a7f07a78a5726e9c6b0ae70a6c859` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data` A structure that contains the current data for a controller's inputs and sensors. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga4b61cf500cf4c07b0a26e3b69ac8a32f` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info` A structure that contains information about a particular controller device. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga5b4c68212552d8f38b4e608813e5d210` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data#struct_paddleboat___controller___mapping___data` **[Deprecated.](https://developer.android.com/reference/games/game-controller/deprecated/deprecated)** Use the `Paddleboat_Controller_Mapping_File_Header` in combination with the [Paddleboat_addControllerRemapDataFromFileBuffer](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa44e684332e828e5dfb11e5d88c793ad) function instead. A structure that describes the button and axis mappings for a specified controller device running on a specified range of Android API levels. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gad33fa2f7ca4da4c6c528c222f53646ed` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-pointer#struct_paddleboat___controller___pointer` A structure that contains virtual pointer position data. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga3612cd89f716702157e38a43605585c2` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-thumbstick#struct_paddleboat___controller___thumbstick` A structure that contains X and Y axis data for an analog thumbstick. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga9c0484f3eb722018765a459972c7f533` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-thumbstick-precision#struct_paddleboat___controller___thumbstick___precision` A structure that contains axis precision data for a thumbstick in the X and Y axis. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga04768ee0dcfd069e3b675669ca2a2a3f)(const int32_t controllerIndex, const Paddleboat_Motion_Data *motionData, void *userData)` | typedef `void(*` Signature of a function that can be passed to [Paddleboat_setMotionDataCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaf1a8471840a9b6ce5547d5c97b4aa679) to receive information about motion data events sent by connected controllers. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga5ba5bc1342c9e8066e57162fce8d8b15` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-motion-data#struct_paddleboat___motion___data` A structure that contains motion data reported by a controller. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gae6bc9893ba933866aac929606d4972df)(const Paddleboat_MouseStatus mouseStatus, void *userData)` | typedef `void(*` Signature of a function that can be passed to [Paddleboat_setMouseStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga2f34c2b863b1dafdbd2970746b511724) to receive information about mouse device status changes. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga5fe304710045de7a537a72213ac7f19a` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data` A structure that contains input data for the mouse device. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gad7221e1c122529b309146cfe46cd7901)(const bool physicalKeyboardStatus, void *userData)` | typedef `void(*` Signature of a function that can be passed to [Paddleboat_setPhysicalKeyboardStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gae9ec414d5db72107f27d829d795d2deb) to receive information about physical keyboard connection status changes. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga2137913b04175826c650d1b5a525a0d1` | typedef `struct https://developer.android.com/reference/games/game-controller/struct/paddleboat-vibration-data#struct_paddleboat___vibration___data` A structure that describes the parameters of a vibration effect. |

| ### Functions ||
|---|---|
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaea65b15f017a80c4a72ed370b78c497b(const https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6582cbba5c0b2375f11be15103c8c372 addMode, const int32_t remapTableEntryCount, const https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data#struct_paddleboat___controller___mapping___data *mappingData)` | `void` **[Deprecated.](https://developer.android.com/reference/games/game-controller/deprecated/deprecated)** Use [Paddleboat_addControllerRemapDataFromFd](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gacbf8290b64c3ee7c95b4e5e685180294) or [Paddleboat_addControllerRemapDataFromFileBuffer](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa44e684332e828e5dfb11e5d88c793ad) instead. Add new controller remap information to the internal remapping table. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gacbf8290b64c3ee7c95b4e5e685180294(const https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6582cbba5c0b2375f11be15103c8c372 addMode, const int mappingFileDescriptor)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Add new controller remap information to the internal remapping table. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa44e684332e828e5dfb11e5d88c793ad(const https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6582cbba5c0b2375f11be15103c8c372 addMode, const void *mappingFileBuffer, const size_t mappingFileBufferSize)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Add new controller remap information to the internal remapping table. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga8d348ee65240b5cb88561455d3c57e69(JNIEnv *env)` | `void` Destroy resources that Paddleboat has created. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gae62d25f21d30b32126c9836c5799dd67()` | `uint64_t` Retrieve the active axis ids being used by connected devices. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga9c71f31ca21d7ee147eacef0782f5954()` | `bool` Get whether Paddleboat consumes AKEYCODE_BACK key events from devices being managed by Paddleboat. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaf2b82bb441d829c171fcec4467dad66e(const int32_t controllerIndex, https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data *controllerData)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Retrieve the current controller data from the controller with the specified index. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gabc76cbeaa7d1f9c7e169663661066fcb(const int32_t controllerIndex, https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info *controllerInfo)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Retrieve the current controller device info from the controller with the specified index. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga417e1dab777d7344504accab7d5b6a1e(const int32_t controllerIndex, const size_t bufferSize, char *controllerName)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Retrieve the current controller name from the controller with the specified index. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga8875420658ef84bfd4bc991fa266fba0(const int32_t destRemapTableEntryCount, https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data#struct_paddleboat___controller___mapping___data *mappingData)` | `int32_t` **[Deprecated.](https://developer.android.com/reference/games/game-controller/deprecated/deprecated)** The number of elements returned will always be zero. Retrieve the current table of controller remap entries. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga35525c33cb9a2eb3cbb5d247482bebf0(const int32_t controllerIndex)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa82fd354ffbbca9912915769b2d46f16` Retrieve the current controller device info from the controller with the specified index. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa5f8501f7cf22cc5ec7b24deb13276af()` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab2325b0a3e7ffa306a9e0c2132a1295a` Get availability information for motion data sensors integrated directly on the main device, instead of attached to a controller. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga99f648c21d45d847d874eb11402cb36f()` | `int32_t` An function that returns the last keycode seen in a key event coming from a controller owned by Paddleboat. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga7c5ae710608a43833da32476237354e1(https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data *mouseData)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Retrieve the current mouse data. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga31e408b94745887bd427f53313954b79()` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gad68987f966314bcf6611f4741340d35d` Retrieve the current controller device info from the controller with the specified index. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga9bfdb7334f0f828641874d9e413a6fa1()` | `bool` Retrieve the physical keyboard connection status for the device. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga930a7540c1efa580e40f1b8020f388e2(JNIEnv *env, jobject jcontext)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Initialize Paddleboat, constructing internal resources via JNI. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga5229ca465c9ec68a1fd8f8b85f34554d()` | `bool` Check if Paddleboat was successfully initialized. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab2de057229f126604f1582c6a3fc9ecf(JNIEnv *env)` | `void` Inform Paddleboat that a start event was sent to the application. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaad986dc4f853d5e51302942ed0362479(JNIEnv *env)` | `void` Inform Paddleboat that a stop event was sent to the application. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gadd391e93855feff4603c9ed9415f4ca1(const void *event, const size_t eventSize)` | `int32_t` Process a GameActivityKeyEvent input event to see if it is from a device being managed by Paddleboat. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga0e90f8866180f0d872d318d5e328e236(const void *event, const size_t eventSize)` | `int32_t` Process a GameActivityMotionEvent input event to see if it is from a device being managed by Paddleboat. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga5a7c1d0af22b68f149eaeafe189e6e04(const AInputEvent *event)` | `int32_t` Process an input event to see if it is from a device being managed by Paddleboat. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gac7861fa6a0db18485c8f811a2bf25145(bool consumeBackButton)` | `void` Set whether Paddleboat consumes AKEYCODE_BACK key events from devices being managed by Paddleboat. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaaf5b5a64675e078456de0e260db8190b(const int32_t controllerIndex, const https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gafcde877b66efebe1b7bcfcd37ac76361 lightType, const uint32_t lightData, JNIEnv *env)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Configures a light on the controller with the specified index. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab0049f498344bd6fd3700f861d7ee89d(https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga8f52523cd08ca09b93ffb83112d2777c statusCallback, void *userData)` | `void` Set a callback to be called whenever a controller managed by Paddleboat changes status. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gafbd2bf6d21b4c65f0164dc62dd965b03(const int32_t controllerIndex, const https://developer.android.com/reference/games/game-controller/struct/paddleboat-vibration-data#struct_paddleboat___vibration___data *vibrationData, JNIEnv *env)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Set vibration data for the controller with the specified index. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaf1a8471840a9b6ce5547d5c97b4aa679(https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga04768ee0dcfd069e3b675669ca2a2a3f motionDataCallback, void *userData)` | `void` Set a callback which is called whenever a controller managed by Paddleboat reports a motion data event. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga3b727602247161b234b63e937fbbe43c(https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga04768ee0dcfd069e3b675669ca2a2a3f motionDataCallback, https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab2325b0a3e7ffa306a9e0c2132a1295a integratedSensorFlags, void *userData)` | `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga79127c94fada4ed75537d0632c2fd382` Set a callback which is called whenever a controller managed by Paddleboat reports a motion data event. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga2f34c2b863b1dafdbd2970746b511724(https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gae6bc9893ba933866aac929606d4972df statusCallback, void *userData)` | `void` Set a callback to be called when the mouse status changes. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gae9ec414d5db72107f27d829d795d2deb(https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gad7221e1c122529b309146cfe46cd7901 statusCallback, void *userData)` | `void` Set a callback to be called when the physical keyboard connection. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6712e94496ff7aad2e6075158d1ce611(JNIEnv *env)` | `void` Updates internal Paddleboat status and processes pending connection/disconnections. |

| ### Macros ||
|---|---|
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga05ed74f768fb2a71f92bd5205be4a123 0` |   |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga2b10fa75e771eccb55090d3491100b49 2` |   |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gadaec92c1a2a22559f7b6c099c90d223f 0xadd1eb0a` | The expected value in the `fileIdentifier` field of the `Paddleboat_Controller_Mapping_File_Header` for a valid mapping file. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga3f403ce7ec342bcb3edc4b85b137b1d1 8` | Maximum number of simultaneously connected controllers. |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6967399fcfbb54214dde1b179e1e1b42 1` |   |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaca7a784dcb6e5ac3f1612c7165d7afb1 ANDROID_GAMESDK_PACKED_VERSION(PADDLEBOAT_MAJOR_VERSION, \ PADDLEBOAT_MINOR_VERSION, \ PADDLEBOAT_BUGFIX_VERSION)` |   |
| `https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gac30f77e32833a098b767f4e7ffc19a9c 64` | The maximum number of characters, including the terminating character, allowed in a string table entry. |

| ### Structs ||
|---|---|
| [Paddleboat_Controller_Battery](https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-battery) | A structure that describes the current battery state of a controller. |
| [Paddleboat_Controller_Data](https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data) | A structure that contains the current data for a controller's inputs and sensors. |
| [Paddleboat_Controller_Info](https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info) | A structure that contains information about a particular controller device. |
| [Paddleboat_Controller_Mapping_Data](https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data) | A structure that describes the button and axis mappings for a specified controller device running on a specified range of Android API levels. |
| [Paddleboat_Controller_Pointer](https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-pointer) | A structure that contains virtual pointer position data. |
| [Paddleboat_Controller_Thumbstick](https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-thumbstick) | A structure that contains X and Y axis data for an analog thumbstick. |
| [Paddleboat_Controller_Thumbstick_Precision](https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-thumbstick-precision) | A structure that contains axis precision data for a thumbstick in the X and Y axis. |
| [Paddleboat_Motion_Data](https://developer.android.com/reference/games/game-controller/struct/paddleboat-motion-data) | A structure that contains motion data reported by a controller. |
| [Paddleboat_Mouse_Data](https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data) | A structure that contains input data for the mouse device. |
| [Paddleboat_Vibration_Data](https://developer.android.com/reference/games/game-controller/struct/paddleboat-vibration-data) | A structure that describes the parameters of a vibration effect. |

## Enumerations

### Paddleboat_BatteryStatus

```scdoc
 Paddleboat_BatteryStatus
```
Battery status of a controller.

| Properties ||
|---|---|
| `PADDLEBOAT_CONTROLLER_BATTERY_CHARGING` | Controller battery is charging. |
| `PADDLEBOAT_CONTROLLER_BATTERY_DISCHARGING` | Controller battery is discharging. |
| `PADDLEBOAT_CONTROLLER_BATTERY_FULL` | Controller battery is completely charged. |
| `PADDLEBOAT_CONTROLLER_BATTERY_NOT_CHARGING` | Controller battery is not charging. |
| `PADDLEBOAT_CONTROLLER_BATTERY_UNKNOWN` | Battery status is unknown. |

### Paddleboat_Buttons

```scdoc
 Paddleboat_Buttons
```
Paddleboat controller buttons defined as bitmask values.

AND against `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` to check for button status.

| Properties ||
|---|---|
| `PADDLEBOAT_BUTTON_A` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` A button. |
| `PADDLEBOAT_BUTTON_AUX1` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` AUX1 button. |
| `PADDLEBOAT_BUTTON_AUX2` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` AUX2 button. |
| `PADDLEBOAT_BUTTON_AUX3` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` AUX3 button. |
| `PADDLEBOAT_BUTTON_AUX4` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` AUX4 button. |
| `PADDLEBOAT_BUTTON_B` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` B button. |
| `PADDLEBOAT_BUTTON_COUNT` | Count of defined controller buttons. |
| `PADDLEBOAT_BUTTON_DPAD_DOWN` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` direction pad down button. |
| `PADDLEBOAT_BUTTON_DPAD_LEFT` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` direction pad left button. |
| `PADDLEBOAT_BUTTON_DPAD_RIGHT` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` direction pad right button. |
| `PADDLEBOAT_BUTTON_DPAD_UP` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` direction pad up button. |
| `PADDLEBOAT_BUTTON_L1` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` L1 trigger button. |
| `PADDLEBOAT_BUTTON_L2` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` L2 trigger button. |
| `PADDLEBOAT_BUTTON_L3` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` L3 thumbstick button. |
| `PADDLEBOAT_BUTTON_R1` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` R1 trigger button. |
| `PADDLEBOAT_BUTTON_R2` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` R2 trigger button. |
| `PADDLEBOAT_BUTTON_R3` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` R3 thumbstick button. |
| `PADDLEBOAT_BUTTON_SELECT` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` Select button. |
| `PADDLEBOAT_BUTTON_START` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` Start button. |
| `PADDLEBOAT_BUTTON_SYSTEM` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` System button. |
| `PADDLEBOAT_BUTTON_TOUCHPAD` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` Touchpad pressed. |
| `PADDLEBOAT_BUTTON_X` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` X button. |
| `PADDLEBOAT_BUTTON_Y` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1abc912fe3783535659516163d72ea4c96` Y button. |

### Paddleboat_ControllerButtonLayout

```scdoc
 Paddleboat_ControllerButtonLayout
```
The button layout and iconography of the controller buttons.

| Properties ||
|---|---|
| `PADDLEBOAT_CONTROLLER_LAYOUT_ARCADE_STICK` | X Y R1 L1 A B R2 L2. |
| `PADDLEBOAT_CONTROLLER_LAYOUT_MASK` | Mask value, AND with `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` to get the `Paddleboat_ControllerButtonLayout` value. |
| `PADDLEBOAT_CONTROLLER_LAYOUT_REVERSE` | X Y A B |
| `PADDLEBOAT_CONTROLLER_LAYOUT_SHAPES` | △ □ ○ x x = A, ○ = B, □ = X, △ = Y. |
| `PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD` | Y X B A |

### Paddleboat_ControllerStatus

```scdoc
 Paddleboat_ControllerStatus
```
Current status of a controller (at a specified controller index)

| Properties ||
|---|---|
| `PADDLEBOAT_CONTROLLER_ACTIVE` | Controller is connected and active. |
| `PADDLEBOAT_CONTROLLER_INACTIVE` | No controller is connected. |
| `PADDLEBOAT_CONTROLLER_JUST_CONNECTED` | Controller has just connected, only seen in a controller status callback. |
| `PADDLEBOAT_CONTROLLER_JUST_DISCONNECTED` | Controller has just disconnected, only seen in a controller status callback. |

### Paddleboat_Controller_Flags

```scdoc
 Paddleboat_Controller_Flags
```
Paddleboat controller device feature flags as bitmask values AND against `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` to determine feature availability.

| Properties ||
|---|---|
| `PADDLEBOAT_CONTROLLER_FLAG_ACCELEROMETER` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device supports reporting accelerometer motion axis data. |
| `PADDLEBOAT_CONTROLLER_FLAG_BATTERY` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device supports reporting the battery status information in the controller data structure. |
| `PADDLEBOAT_CONTROLLER_FLAG_GENERIC_PROFILE` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device wasn't found in the internal controller database and a generic button and axis mapping profile is being used. |
| `PADDLEBOAT_CONTROLLER_FLAG_GYROSCOPE` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device supports reporting gyroscope motion axis data. |
| `PADDLEBOAT_CONTROLLER_FLAG_LIGHT_PLAYER` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device supports setting a player number light using the [Paddleboat_setControllerLight](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaaf5b5a64675e078456de0e260db8190b) function with the `PADDLEBOAT_LIGHT_PLAYER_NUMBER` light type. |
| `PADDLEBOAT_CONTROLLER_FLAG_LIGHT_RGB` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device supports setting a RGB light color using the [Paddleboat_setControllerLight](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaaf5b5a64675e078456de0e260db8190b) function with the `PADDLEBOAT_LIGHT_RGB` light type. |
| `PADDLEBOAT_CONTROLLER_FLAG_TOUCHPAD` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device has a touchpad that will register the `PADDLEBOAT_BUTTON_TOUCHPAD` button when pressed. |
| `PADDLEBOAT_CONTROLLER_FLAG_VIBRATION` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device supports vibration effects using the [Paddleboat_setControllerVibrationData](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gafbd2bf6d21b4c65f0164dc62dd965b03) function. |
| `PADDLEBOAT_CONTROLLER_FLAG_VIBRATION_DUAL_MOTOR` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device supports both left and right vibration motor data for vibration effects. |
| `PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08` If set, this controller device can simulate a virtual mouse and will report coordinates in `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-data#struct_paddleboat___controller___data_1ab0e220be3ee006e1c26eecf59c279af6` |

### Paddleboat_ErrorCode

```scdoc
 Paddleboat_ErrorCode
```
Paddleboat error code results.

| Properties ||
|---|---|
| `PADDLEBOAT_ERROR_ALREADY_INITIALIZED` | [Paddleboat_init](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga930a7540c1efa580e40f1b8020f388e2) was called a second time without a call to [Paddleboat_destroy](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga8d348ee65240b5cb88561455d3c57e69) in between. |
| `PADDLEBOAT_ERROR_FEATURE_NOT_SUPPORTED` | The feature is not supported by the specified controller. Example: Calling [Paddleboat_setControllerVibrationData](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gafbd2bf6d21b4c65f0164dc62dd965b03) on a controller that does not have the `PADDLEBOAT_CONTROLLER_FLAG_VIBRATION` bit set in `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08`. |
| `PADDLEBOAT_ERROR_FILE_IO` | A file I/O error occurred when trying to read mapping data from the file descriptor passed to [Paddleboat_addControllerRemapDataFromFd](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gacbf8290b64c3ee7c95b4e5e685180294). |
| `PADDLEBOAT_ERROR_INIT_GCM_FAILURE` | Paddleboat could not be successfully initialized. Instantiation of the GameControllerManager class failed. |
| `PADDLEBOAT_ERROR_INVALID_CONTROLLER_INDEX` | Invalid controller index specified. Valid index range is from 0 to PADDLEBOAT_MAX_CONTROLLERS - 1 |
| `PADDLEBOAT_ERROR_INVALID_PARAMETER` | An invalid parameter was specified. This usually means NULL or nullptr was passed in a parameter that requires a valid pointer. |
| `PADDLEBOAT_ERROR_NOT_INITIALIZED` | Paddleboat was not successfully initialized. Either [Paddleboat_init](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga930a7540c1efa580e40f1b8020f388e2) was not called or returned an error. |
| `PADDLEBOAT_ERROR_NO_CONTROLLER` | No controller is connected at the specified controller index. |
| `PADDLEBOAT_ERROR_NO_MOUSE` | No virtual or physical mouse device is connected. |
| `PADDLEBOAT_INCOMPATIBLE_MAPPING_DATA` | Incompatible controller mapping data was provided. The data in the provided buffer is from an incompatible version of the mapping data format. |
| `PADDLEBOAT_INVALID_MAPPING_DATA` | Invalid controller mapping data was provided. The data in the provided buffer does not match the expected mapping data format. |
| `PADDLEBOAT_NO_ERROR` | No error. Function call was successful. |

### Paddleboat_Ignored_Axis

```scdoc
 Paddleboat_Ignored_Axis
```
Special constants to specify an axis or axis button mapping is ignored by the controller.

| Properties ||
|---|---|
| `PADDLEBOAT_AXIS_BUTTON_IGNORED` | Constant that signifies an axis in the `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data#struct_paddleboat___controller___mapping___data_1a5fe4f0335bebe64ca50eb3d447cb958c` array and/or `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data#struct_paddleboat___controller___mapping___data_1a0b12ff9879d5d9d89cf6a380ef5bcf1b` array does not have a mapping to a button. |
| `PADDLEBOAT_AXIS_IGNORED` | Constant that signifies an axis in the `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data#struct_paddleboat___controller___mapping___data_1a43ac78782abfdd0cdd9fe1319e2966c3` array is unused by the controller. |

### Paddleboat_Ignored_Buttons

```scdoc
 Paddleboat_Ignored_Buttons
```
Special constant to specify a button is ignored by the controller.

| Properties ||
|---|---|
| `PADDLEBOAT_BUTTON_IGNORED` | Constant that signifies a button in the `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data#struct_paddleboat___controller___mapping___data_1a8e70c5bc300285d004004ef021773af0` array does not map to a button on the controller. |

### Paddleboat_Integrated_Motion_Sensor_Flags

```scdoc
 Paddleboat_Integrated_Motion_Sensor_Flags
```
Bitmask values to use with [Paddleboat_getIntegratedMotionSensorFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa5f8501f7cf22cc5ec7b24deb13276af) and [Paddleboat_setMotionDataCallbackWithIntegratedFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga3b727602247161b234b63e937fbbe43c) Bitmask values represent integrated sensor types on the main device instead of a controller device.

| Properties ||
|---|---|
| `PADDLEBOAT_INTEGRATED_SENSOR_ACCELEROMETER` | Bitmask for [Paddleboat_getIntegratedMotionSensorFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa5f8501f7cf22cc5ec7b24deb13276af) If set, the main device supports reporting accelerometer motion axis data. |
| `PADDLEBOAT_INTEGRATED_SENSOR_GYROSCOPE` | Bitmask for [Paddleboat_getIntegratedMotionSensorFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa5f8501f7cf22cc5ec7b24deb13276af) If set, the main device supports reporting gyroscope motion axis data. |
| `PADDLEBOAT_INTEGRATED_SENSOR_NONE` | Bitmask for [Paddleboat_getIntegratedMotionSensorFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa5f8501f7cf22cc5ec7b24deb13276af) No present integrated motion sensors. |

### Paddleboat_LightType

```scdoc
 Paddleboat_LightType
```
The type of light being specified by a call to [Paddleboat_setControllerLight](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaaf5b5a64675e078456de0e260db8190b).

| Properties ||
|---|---|
| `PADDLEBOAT_LIGHT_PLAYER_NUMBER` | Light is a player index, `lightData` is the player number. |
| `PADDLEBOAT_LIGHT_RGB` | Light is a color light,. `lightData` is a ARGB (8888) light value. |

### Paddleboat_Mapping_Axis

```scdoc
 Paddleboat_Mapping_Axis
```
Paddleboat axis mapping table axis order.

| Properties ||
|---|---|
| `PADDLEBOAT_MAPPING_AXIS_COUNT` | Number of axis used for controller mapping configuration. |
| `PADDLEBOAT_MAPPING_AXIS_HATX` | Paddleboat internal mapping index for HatX trigger axis. This is usually the dpad left/right. |
| `PADDLEBOAT_MAPPING_AXIS_HATY` | Paddleboat internal mapping index for HatY trigger axis. This is usually the dpad up/down. |
| `PADDLEBOAT_MAPPING_AXIS_L1` | Paddleboat internal mapping index for L1 trigger axis. |
| `PADDLEBOAT_MAPPING_AXIS_L2` | Paddleboat internal mapping index for L2 trigger axis. |
| `PADDLEBOAT_MAPPING_AXIS_LEFTSTICK_X` | Paddleboat internal mapping index for left thumbstick X axis. |
| `PADDLEBOAT_MAPPING_AXIS_LEFTSTICK_Y` | Paddleboat internal mapping index for left thumbstick Y axis. |
| `PADDLEBOAT_MAPPING_AXIS_R1` | Paddleboat internal mapping index for R1 trigger axis. |
| `PADDLEBOAT_MAPPING_AXIS_R2` | Paddleboat internal mapping index for R2 trigger axis. |
| `PADDLEBOAT_MAPPING_AXIS_RIGHTSTICK_X` | Paddleboat internal mapping index for right thumbstick X axis. |
| `PADDLEBOAT_MAPPING_AXIS_RIGHTSTICK_Y` | Paddleboat internal mapping index for right thumbstick Y axis. |

### Paddleboat_Motion_Data_Callback_Sensor_Index

```scdoc
 Paddleboat_Motion_Data_Callback_Sensor_Index
```
Bitmask flags to use with [Paddleboat_getIntegratedMotionSensorFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa5f8501f7cf22cc5ec7b24deb13276af) and [Paddleboat_setMotionDataCallbackWithIntegratedFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga3b727602247161b234b63e937fbbe43c) Flag values represent integrated sensor types on the main device instead of a controller device.

| Properties ||
|---|---|
| `PADDLEBOAT_INTEGRATED_SENSOR_INDEX` | Value passed in the `controllerIndex` parameter of the `Paddleboat_MotionDataCallback` if integrated sensor data reporting is active and the motion data event came from an integrated sensor, rather than a controller sensor. This value will only be passed to the motion data callback if integrated sensor data has been requested using [Paddleboat_setMotionDataCallbackWithIntegratedFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga3b727602247161b234b63e937fbbe43c) |

### Paddleboat_Motion_Type

```scdoc
 Paddleboat_Motion_Type
```
The type of motion data being reported in a [Paddleboat_Motion_Data](https://developer.android.com/reference/games/game-controller/struct/paddleboat-motion-data#struct_paddleboat___motion___data) structure.

| Properties ||
|---|---|
| `PADDLEBOAT_MOTION_ACCELEROMETER` | Accelerometer motion data. |
| `PADDLEBOAT_MOTION_GYROSCOPE` | Gyroscope motion data. |

### Paddleboat_MouseStatus

```scdoc
 Paddleboat_MouseStatus
```
The status of the mouse device.

| Properties ||
|---|---|
| `PADDLEBOAT_MOUSE_CONTROLLER_EMULATED` | A virtual mouse is connected The virtual mouse is being simulated by a game controller. |
| `PADDLEBOAT_MOUSE_NONE` | No mouse device is connected. |
| `PADDLEBOAT_MOUSE_PHYSICAL` | A physical mouse or trackpad device is connected. |

### Paddleboat_Mouse_Buttons

```scdoc
 Paddleboat_Mouse_Buttons
```
Paddleboat mouse buttons as bitmask values AND against `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` to determine button status.

| Properties ||
|---|---|
| `PADDLEBOAT_MOUSE_BUTTON_6` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` mouse button 6. |
| `PADDLEBOAT_MOUSE_BUTTON_7` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` mouse button 7. |
| `PADDLEBOAT_MOUSE_BUTTON_8` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` mouse button 8. |
| `PADDLEBOAT_MOUSE_BUTTON_BACK` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` back mouse button. |
| `PADDLEBOAT_MOUSE_BUTTON_FORWARD` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` forward mouse button. |
| `PADDLEBOAT_MOUSE_BUTTON_LEFT` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` left mouse button. |
| `PADDLEBOAT_MOUSE_BUTTON_MIDDLE` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` middle mouse button. |
| `PADDLEBOAT_MOUSE_BUTTON_RIGHT` | Bitmask for `https://developer.android.com/reference/games/game-controller/struct/paddleboat-mouse-data#struct_paddleboat___mouse___data_1ad3129857e08b31a038945b938f5d0c6d` right mouse button. |

### Paddleboat_Remap_Addition_Mode

```scdoc
 Paddleboat_Remap_Addition_Mode
```
The addition mode to use when passing new controller mapping data to [Paddleboat_addControllerRemapData](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaea65b15f017a80c4a72ed370b78c497b).

| Properties ||
|---|---|
| `PADDLEBOAT_REMAP_ADD_MODE_DEFAULT` | If a vendorId/productId controller entry in the new remap table exists in the current database, and the min/max API ranges overlap, replace the existing entry, otherwise add a new entry. Always adds a new entry if the vendorId/productId does not exist in the current database. These changes only persist for the current session. |
| `PADDLEBOAT_REMAP_ADD_MODE_REPLACE_ALL` | The current controller database will be erased and entirely replaced by the new remap table. This change only persists for the current session. |

## Typedefs

### Paddleboat_ControllerStatusCallback

```gdscript
void(* Paddleboat_ControllerStatusCallback)(const int32_t controllerIndex, const Paddleboat_ControllerStatus controllerStatus, void *userData)
```
Signature of a function that can be passed to [Paddleboat_setControllerStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab0049f498344bd6fd3700f861d7ee89d) to receive information about controller connections and disconnections.


Function will be called on the same thread that calls [Paddleboat_update](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6712e94496ff7aad2e6075158d1ce611).

| Details ||
|---|---|
| Parameters | |---|---| | `controllerIndex` | Index of the controller that has registered a status change, will range from 0 to PADDLEBOAT_MAX_CONTROLLERS - 1. | | `controllerStatus` | New status of the controller. | | `userData` | The value of the userData parameter passed to [Paddleboat_setControllerStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab0049f498344bd6fd3700f861d7ee89d) | |

### Paddleboat_Controller_Battery

```scdoc
struct Paddleboat_Controller_Battery Paddleboat_Controller_Battery
```
A structure that describes the current battery state of a controller.

This structure will only be populated if a controller has `PADDLEBOAT_CONTROLLER_FLAG_BATTERY` set in `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-info#struct_paddleboat___controller___info_1aee089451d9723e2b9a395c368a65ab08`

### Paddleboat_Controller_Data

```scdoc
struct Paddleboat_Controller_Data Paddleboat_Controller_Data
```
A structure that contains the current data for a controller's inputs and sensors.

### Paddleboat_Controller_Info

```scdoc
struct Paddleboat_Controller_Info Paddleboat_Controller_Info
```
A structure that contains information about a particular controller device.

Several fields are populated by the value of the corresponding fields from InputDevice.

### Paddleboat_Controller_Mapping_Data

```scdoc
struct Paddleboat_Controller_Mapping_Data Paddleboat_Controller_Mapping_Data
```
A structure that describes the button and axis mappings for a specified controller device running on a specified range of Android API levels.

<br />


See `Paddleboat_Mapping_Axis` for axis order. Hat axis should be mapped to dpad buttons. **[Deprecated.](https://developer.android.com/reference/games/game-controller/deprecated/deprecated)** Use the `Paddleboat_Controller_Mapping_File_Header` in combination with the [Paddleboat_addControllerRemapDataFromFileBuffer](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa44e684332e828e5dfb11e5d88c793ad) function instead.

### Paddleboat_Controller_Pointer

```scdoc
struct Paddleboat_Controller_Pointer Paddleboat_Controller_Pointer
```
A structure that contains virtual pointer position data.

X and Y coordinates are pixel based and range from 0,0 to window width,height.

### Paddleboat_Controller_Thumbstick

```scdoc
struct Paddleboat_Controller_Thumbstick Paddleboat_Controller_Thumbstick
```
A structure that contains X and Y axis data for an analog thumbstick.

Axis ranges from -1.0 to 1.0.

### Paddleboat_Controller_Thumbstick_Precision

```scdoc
struct Paddleboat_Controller_Thumbstick_Precision Paddleboat_Controller_Thumbstick_Precision
```
A structure that contains axis precision data for a thumbstick in the X and Y axis.

Value ranges from 0.0 to 1.0. Flat is the extent of a center flat (deadzone) area of a thumbstick axis Fuzz is the error tolerance (deviation) of a thumbstick axis

### Paddleboat_MotionDataCallback

```gdscript
void(* Paddleboat_MotionDataCallback)(const int32_t controllerIndex, const Paddleboat_Motion_Data *motionData, void *userData)
```
Signature of a function that can be passed to [Paddleboat_setMotionDataCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaf1a8471840a9b6ce5547d5c97b4aa679) to receive information about motion data events sent by connected controllers.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `controllerIndex` | Index of the controller reporting the motion event, will range from 0 to PADDLEBOAT_MAX_CONTROLLERS - 1. If integrated motion sensor reporting was enabled, this value will equal `PADDLEBOAT_INTEGRATED_SENSOR_INDEX` if the motion event came from the integrated sensors on the main device, instead of a controller | | `motionData` | The motion data. Pointer is only valid until the callback returns. | | `userData` | The value of the userData parameter passed to [Paddleboat_setMotionDataCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaf1a8471840a9b6ce5547d5c97b4aa679) | |

### Paddleboat_Motion_Data

```scdoc
struct Paddleboat_Motion_Data Paddleboat_Motion_Data
```
A structure that contains motion data reported by a controller.

### Paddleboat_MouseStatusCallback

```gdscript
void(* Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus mouseStatus, void *userData)
```
Signature of a function that can be passed to [Paddleboat_setMouseStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga2f34c2b863b1dafdbd2970746b511724) to receive information about mouse device status changes.


Function will be called on the same thread that calls [Paddleboat_update](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6712e94496ff7aad2e6075158d1ce611).

| Details ||
|---|---|
| Parameters | |---|---| | `mouseStatus` | Current status of the mouse. | | `userData` | The value of the userData parameter passed to [Paddleboat_setMouseStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga2f34c2b863b1dafdbd2970746b511724) | |

### Paddleboat_Mouse_Data

```scdoc
struct Paddleboat_Mouse_Data Paddleboat_Mouse_Data
```
A structure that contains input data for the mouse device.

### Paddleboat_PhysicalKeyboardStatusCallback

```gdscript
void(* Paddleboat_PhysicalKeyboardStatusCallback)(const bool physicalKeyboardStatus, void *userData)
```
Signature of a function that can be passed to [Paddleboat_setPhysicalKeyboardStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gae9ec414d5db72107f27d829d795d2deb) to receive information about physical keyboard connection status changes.


Function will be called on the same thread that calls [Paddleboat_update](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga6712e94496ff7aad2e6075158d1ce611).

| Details ||
|---|---|
| Parameters | |---|---| | `physicalKeyboardStatus` | Whether a physical keyboard is currently connected. | | `userData` | The value of the userData parameter passed to [Paddleboat_setPhysicalKeyboardStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gae9ec414d5db72107f27d829d795d2deb) | |

### Paddleboat_Vibration_Data

```scdoc
struct Paddleboat_Vibration_Data Paddleboat_Vibration_Data
```
A structure that describes the parameters of a vibration effect.

## Functions

### Paddleboat_addControllerRemapData

```gdscript
void Paddleboat_addControllerRemapData(
  const Paddleboat_Remap_Addition_Mode addMode,
  const int32_t remapTableEntryCount,
  const Paddleboat_Controller_Mapping_Data *mappingData
)
```
Add new controller remap information to the internal remapping table.

Used to specify custom controller information or override default mapping for a given controller. **[Deprecated.](https://developer.android.com/reference/games/game-controller/deprecated/deprecated)** Use [Paddleboat_addControllerRemapDataFromFd](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gacbf8290b64c3ee7c95b4e5e685180294) or [Paddleboat_addControllerRemapDataFromFileBuffer](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa44e684332e828e5dfb11e5d88c793ad) instead.

| Details ||
|---|---|
| Parameters | |---|---| | `addMode` | The addition mode for the new data. See the `Paddleboat_Remap_Addition_Mode` enum for details on each mode. | | `remapTableEntryCount` | the number of remap elements in the mappingData array. | | `mappingData` | An array of controller mapping structs to be added to the internal remapping table. The pointer passed in mappingData is not retained and does not need to persist after function return. | |

### Paddleboat_addControllerRemapDataFromFd

```gdscript
Paddleboat_ErrorCode Paddleboat_addControllerRemapDataFromFd(
  const Paddleboat_Remap_Addition_Mode addMode,
  const int mappingFileDescriptor
)
```
Add new controller remap information to the internal remapping table.

Used to specify custom controller information or override default mapping for a given controller. For more information on controller mapping, see the documentation at: <https://developer.android.com/games/sdk/game-controller/custom-mapping>

| Details ||
|---|---|
| Parameters | |---|---| | `addMode` | The addition mode for the new data. See the `Paddleboat_Remap_Addition_Mode` enum for details on each mode. | | `mappingFileDescriptor` | A file descriptor returned by a call to `open`. Paddleboat does not call 'close' on the file descriptor before returning, closing the file is the responsibility of the caller. | |
| **Returns** | `PADDLEBOAT_NO_ERROR` if successful, otherwise an error code. |

### Paddleboat_addControllerRemapDataFromFileBuffer

```gdscript
Paddleboat_ErrorCode Paddleboat_addControllerRemapDataFromFileBuffer(
  const Paddleboat_Remap_Addition_Mode addMode,
  const void *mappingFileBuffer,
  const size_t mappingFileBufferSize
)
```
Add new controller remap information to the internal remapping table.

Used to specify custom controller information or override default mapping for a given controller. For more information on controller mapping, see the documentation at: <https://developer.android.com/games/sdk/game-controller/custom-mapping>

| Details ||
|---|---|
| Parameters | |---|---| | `addMode` | The addition mode for the new data. See the `Paddleboat_Remap_Addition_Mode` enum for details on each mode. | | `mappingFileBuffer` | A pointer to a buffer containing a PaddleboatMappingTool file compatible with this version of the Paddleboat library. The beginning of the file is a `Paddleboat_Controller_Mapping_File_Header`. | | `mappingFileBufferSize` | the size of the file in bytes passed in `mappingFileHeader`. | |
| **Returns** | `PADDLEBOAT_NO_ERROR` if successful, otherwise an error code. |

### Paddleboat_destroy

```scdoc
void Paddleboat_destroy(
  JNIEnv *env
)
```
Destroy resources that Paddleboat has created.


**See also:**
[Paddleboat_init](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga930a7540c1efa580e40f1b8020f388e2)

| Details ||
|---|---|
| Parameters | |---|---| | `env` | The JNIEnv attached to the thread calling the function. | |

### Paddleboat_getActiveAxisMask

```scdoc
uint64_t Paddleboat_getActiveAxisMask()
```
Retrieve the active axis ids being used by connected devices.

This can be used to determine what axis values to provide to GameActivityPointerInfo_enableAxis when GameActivity is being used.

| Details ||
|---|---|
| **Returns** | A bitmask of the active axis ids that have been used by connected devices during the current application session. |

### Paddleboat_getBackButtonConsumed

```scdoc
bool Paddleboat_getBackButtonConsumed()
```
Get whether Paddleboat consumes AKEYCODE_BACK key events from devices being managed by Paddleboat.

The default at initialization is true.

| Details ||
|---|---|
| **Returns** | If true, Paddleboat will consume AKEYCODE_BACK key events, if false it will pass them through. |

### Paddleboat_getControllerData

```gdscript
Paddleboat_ErrorCode Paddleboat_getControllerData(
  const int32_t controllerIndex,
  Paddleboat_Controller_Data *controllerData
)
```
Retrieve the current controller data from the controller with the specified index.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `controllerIndex` | The index of the controller to read from, must be between 0 and PADDLEBOAT_MAX_CONTROLLERS - 1 | | `controllerData` | a pointer to the controller data struct to populate. | |
| **Returns** | `PADDLEBOAT_NO_ERROR` if data was successfully read. |

### Paddleboat_getControllerInfo

```gdscript
Paddleboat_ErrorCode Paddleboat_getControllerInfo(
  const int32_t controllerIndex,
  Paddleboat_Controller_Info *controllerInfo
)
```
Retrieve the current controller device info from the controller with the specified index.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `controllerIndex` | The index of the controller to read from, must be between 0 and PADDLEBOAT_MAX_CONTROLLERS - 1 | | `controllerInfo` | a pointer to the controller device info struct to populate. | |
| **Returns** | true if the data was read, false if there was no connected controller at the specified index. |

### Paddleboat_getControllerName

```gdscript
Paddleboat_ErrorCode Paddleboat_getControllerName(
  const int32_t controllerIndex,
  const size_t bufferSize,
  char *controllerName
)
```
Retrieve the current controller name from the controller with the specified index.

This name is retrieved from InputDevice.getName().

| Details ||
|---|---|
| Parameters | |---|---| | `controllerIndex` | The index of the controller to read from, must be between 0 and PADDLEBOAT_MAX_CONTROLLERS - 1 | | `bufferSize` | The capacity in bytes of the string buffer passed in controllerName | | `controllerName` | A pointer to a buffer that will be populated with the name string. The name string is a C string in UTF-8 format. If the length of the string is greater than bufferSize the string will be truncated to fit. | |
| **Returns** | `PADDLEBOAT_NO_ERROR` if data was successfully read. |

### Paddleboat_getControllerRemapTableData

```gdscript
int32_t Paddleboat_getControllerRemapTableData(
  const int32_t destRemapTableEntryCount,
  Paddleboat_Controller_Mapping_Data *mappingData
)
```
Retrieve the current table of controller remap entries.

**[Deprecated.](https://developer.android.com/reference/games/game-controller/deprecated/deprecated)**The number of elements returned will always be zero.

| Details ||
|---|---|
| Parameters | |---|---| | `destRemapTableEntryCount` | the number of `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data#struct_paddleboat___controller___mapping___data` entries in the array passed in the mappingData parameter. Paddleboat will not copy more than this number of entries out of the internal array to avoid overflowing the buffer. | | `mappingData` | pointer to an array of `https://developer.android.com/reference/games/game-controller/struct/paddleboat-controller-mapping-data#struct_paddleboat___controller___mapping___data` structures. this should contain at least destRemapTableEntryCount elements. Passing nullptr is valid, and can be used to get the number of elements in the internal remap table. | |
| **Returns** | The number of elements in the internal remap table. |

### Paddleboat_getControllerStatus

```gdscript
Paddleboat_ControllerStatus Paddleboat_getControllerStatus(
  const int32_t controllerIndex
)
```
Retrieve the current controller device info from the controller with the specified index.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `controllerIndex` | The index of the controller to read from, must be between 0 and PADDLEBOAT_MAX_CONTROLLERS - 1. | |
| **Returns** | Paddleboat_ControllerStatus enum value of the current controller status of the specified controller index. |

### Paddleboat_getIntegratedMotionSensorFlags

```scdoc
Paddleboat_Integrated_Motion_Sensor_Flags Paddleboat_getIntegratedMotionSensorFlags()
```
Get availability information for motion data sensors integrated directly on the main device, instead of attached to a controller.

<br />

| Details ||
|---|---|
| **Returns** | The bitmask of integrated motion data sensors. |

### Paddleboat_getLastKeycode

```scdoc
int32_t Paddleboat_getLastKeycode()
```
An function that returns the last keycode seen in a key event coming from a controller owned by Paddleboat.

Useful for debugging unknown buttons in new devices in the sample app

| Details ||
|---|---|
| **Returns** | keycode from last controller key event. |

### Paddleboat_getMouseData

```scdoc
Paddleboat_ErrorCode Paddleboat_getMouseData(
  Paddleboat_Mouse_Data *mouseData
)
```
Retrieve the current mouse data.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `mouseData` | pointer to the mouse data struct to populate. | |
| **Returns** | true if the data was read, false if there was no connected mouse device. |

### Paddleboat_getMouseStatus

```scdoc
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
```
Retrieve the current controller device info from the controller with the specified index.

<br />

| Details ||
|---|---|
| **Returns** | Paddleboat_MouseStatus enum value of the current mouse status. |

### Paddleboat_getPhysicalKeyboardStatus

```scdoc
bool Paddleboat_getPhysicalKeyboardStatus()
```
Retrieve the physical keyboard connection status for the device.

<br />

| Details ||
|---|---|
| **Returns** | Whether a physical keyboard is currently connected, as boolean. |

### Paddleboat_init

```scdoc
Paddleboat_ErrorCode Paddleboat_init(
  JNIEnv *env,
  jobject jcontext
)
```
Initialize Paddleboat, constructing internal resources via JNI.

This may be called after calling [Paddleboat_destroy](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga8d348ee65240b5cb88561455d3c57e69) to reinitialize the library. **See also:** [Paddleboat_destroy](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga8d348ee65240b5cb88561455d3c57e69)

| Details ||
|---|---|
| Parameters | |---|---| | `env` | The JNIEnv attached to the thread calling the function. | | `jcontext` | A Context derived object used by the game. This can be an Activity derived class. | |
| **Returns** | `PADDLEBOAT_NO_ERROR` if successful, otherwise an error code relating to initialization failure. |

### Paddleboat_isInitialized

```scdoc
bool Paddleboat_isInitialized()
```
Check if Paddleboat was successfully initialized.

<br />

| Details ||
|---|---|
| **Returns** | false if the initialization failed or was not called. |

### Paddleboat_onStart

```scdoc
void Paddleboat_onStart(
  JNIEnv *env
)
```
Inform Paddleboat that a start event was sent to the application.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `env` | The JNIEnv attached to the thread calling the function. | |

### Paddleboat_onStop

```scdoc
void Paddleboat_onStop(
  JNIEnv *env
)
```
Inform Paddleboat that a stop event was sent to the application.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `env` | The JNIEnv attached to the thread calling the function. | |

### Paddleboat_processGameActivityKeyInputEvent

```gdscript
int32_t Paddleboat_processGameActivityKeyInputEvent(
  const void *event,
  const size_t eventSize
)
```
Process a GameActivityKeyEvent input event to see if it is from a device being managed by Paddleboat.

At least once per game frame, the game should iterate through reported GameActivityKeyEvents and pass them to [Paddleboat_processGameActivityKeyInputEvent](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gadd391e93855feff4603c9ed9415f4ca1) for evaluation.

| Details ||
|---|---|
| Parameters | |---|---| | `event` | the GameActivityKeyEvent input event received by the application. | | `eventSize` | the size of the GameActivityKeyEvent struct being passed in bytes. | |
| **Returns** | 0 if the event was ignored, 1 if the event was processed/consumed by Paddleboat. |

### Paddleboat_processGameActivityMotionInputEvent

```gdscript
int32_t Paddleboat_processGameActivityMotionInputEvent(
  const void *event,
  const size_t eventSize
)
```
Process a GameActivityMotionEvent input event to see if it is from a device being managed by Paddleboat.

At least once per game frame, the game should iterate through reported GameActivityMotionEvents and pass them to [Paddleboat_processGameActivityMotionInputEvent](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga0e90f8866180f0d872d318d5e328e236) for evaluation.

| Details ||
|---|---|
| Parameters | |---|---| | `event` | the GameActivityMotionEvent input event received by the application. | | `eventSize` | the size of the GameActivityMotionEvent struct being passed in bytes. | |
| **Returns** | 0 if the event was ignored, 1 if the event was processed/consumed by Paddleboat. |

### Paddleboat_processInputEvent

```gdscript
int32_t Paddleboat_processInputEvent(
  const AInputEvent *event
)
```
Process an input event to see if it is from a device being managed by Paddleboat.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `event` | the input event received by the application. | |
| **Returns** | 0 if the event was ignored, 1 if the event was processed/consumed by Paddleboat. |

### Paddleboat_setBackButtonConsumed

```scdoc
void Paddleboat_setBackButtonConsumed(
  bool consumeBackButton
)
```
Set whether Paddleboat consumes AKEYCODE_BACK key events from devices being managed by Paddleboat.

The default at initialization is true. This can be set to false to allow exiting the application from a back button press when the application is in an appropriate state (i.e. the title screen).

| Details ||
|---|---|
| Parameters | |---|---| | `consumeBackButton` | If true, Paddleboat will consume AKEYCODE_BACK key events, if false it will pass them through. | |

### Paddleboat_setControllerLight

```gdscript
Paddleboat_ErrorCode Paddleboat_setControllerLight(
  const int32_t controllerIndex,
  const Paddleboat_LightType lightType,
  const uint32_t lightData,
  JNIEnv *env
)
```
Configures a light on the controller with the specified index.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `controllerIndex` | The index of the controller to read from, must be between 0 and PADDLEBOAT_MAX_CONTROLLERS - 1 | | `lightType` | Specifies the type of light on the controller to configure. | | `lightData` | Light configuration data. For player index lights, this is a number indicating the player index (usually between 1 and 4). For RGB lights, this is a 8888 ARGB value. | | `env` | The JNIEnv attached to the thread calling the function. | |
| **Returns** | `PADDLEBOAT_NO_ERROR` if successful, otherwise an error code. |

### Paddleboat_setControllerStatusCallback

```scdoc
void Paddleboat_setControllerStatusCallback(
  Paddleboat_ControllerStatusCallback statusCallback,
  void *userData
)
```
Set a callback to be called whenever a controller managed by Paddleboat changes status.

This is used to inform of controller connections and disconnections.

| Details ||
|---|---|
| Parameters | |---|---| | `statusCallback` | function pointer to the controllers status change callback, passing NULL or nullptr will remove any currently registered callback. | | `userData` | optional pointer (may be NULL or nullptr) to user data that will be passed as a parameter to the status callback. A reference to this pointer will be retained internally until changed by a future call to [Paddleboat_setControllerStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gab0049f498344bd6fd3700f861d7ee89d) | |

### Paddleboat_setControllerVibrationData

```gdscript
Paddleboat_ErrorCode Paddleboat_setControllerVibrationData(
  const int32_t controllerIndex,
  const Paddleboat_Vibration_Data *vibrationData,
  JNIEnv *env
)
```
Set vibration data for the controller with the specified index.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `controllerIndex` | The index of the controller to read from, must be between 0 and PADDLEBOAT_MAX_CONTROLLERS - 1. | | `vibrationData` | The intensity and duration data for the vibration effect. Valid intensity range is from 0.0 to 1.0. Intensity of 0.0 will turn off vibration if it is active. Duration is specified in milliseconds. The pointer passed in vibrationData is not retained and does not need to persist after function return. | | `env` | The JNIEnv attached to the thread calling the function. | |
| **Returns** | true if the vibration data was set, false if there was no connected controller or the connected controller does not support vibration. |

### Paddleboat_setMotionDataCallback

```scdoc
void Paddleboat_setMotionDataCallback(
  Paddleboat_MotionDataCallback motionDataCallback,
  void *userData
)
```
Set a callback which is called whenever a controller managed by Paddleboat reports a motion data event.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `motionDataCallback` | function pointer to the motion data callback, passing NULL or nullptr will remove any currently registered callback. | | `userData` | optional pointer (may be NULL or nullptr) to user data that will be passed as a parameter to the status callback. A reference to this pointer will be retained internally until changed by a future call to [Paddleboat_setMotionDataCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaf1a8471840a9b6ce5547d5c97b4aa679) or [Paddleboat_setMotionDataCallbackWithIntegratedFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga3b727602247161b234b63e937fbbe43c) | |

### Paddleboat_setMotionDataCallbackWithIntegratedFlags

```scdoc
Paddleboat_ErrorCode Paddleboat_setMotionDataCallbackWithIntegratedFlags(
  Paddleboat_MotionDataCallback motionDataCallback,
  Paddleboat_Integrated_Motion_Sensor_Flags integratedSensorFlags,
  void *userData
)
```
Set a callback which is called whenever a controller managed by Paddleboat reports a motion data event.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `motionDataCallback` | function pointer to the motion data callback, passing NULL or nullptr will remove any currently registered callback. | | `integratedSensorFlags` | specifies if integrated device sensor data will be reported in the motion data callback. If a sensor flag bit is set, and the main device has that sensor, the motion data will be reported in the motion data callback. The [Paddleboat_getIntegratedMotionSensorFlags](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaa5f8501f7cf22cc5ec7b24deb13276af) function can be used to determine availability of integrated sensors. | | `userData` | optional pointer (may be NULL or nullptr) to user data that will be passed as a parameter to the status callback. A reference to this pointer will be retained internally until changed by a future call to [Paddleboat_setMotionDataCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gaf1a8471840a9b6ce5547d5c97b4aa679) | |
| **Returns** | `PADDLEBOAT_NO_ERROR` if the callback was successfully registered, otherwise an error code. Attempting to register integrated sensor reporting if the specified sensor is not present will result in a `PADDLEBOAT_ERROR_FEATURE_NOT_SUPPORTED` error code. |

### Paddleboat_setMouseStatusCallback

```scdoc
void Paddleboat_setMouseStatusCallback(
  Paddleboat_MouseStatusCallback statusCallback,
  void *userData
)
```
Set a callback to be called when the mouse status changes.

This is used to inform of physical or virual mouse device connections and disconnections.

| Details ||
|---|---|
| Parameters | |---|---| | `statusCallback` | function pointer to the controllers status change callback, passing NULL or nullptr will remove any currently registered callback. | | `userData` | optional pointer (may be NULL or nullptr) to user data that will be passed as a parameter to the status callback. A reference to this pointer will be retained internally until changed by a future call to [Paddleboat_setMouseStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1ga2f34c2b863b1dafdbd2970746b511724) | |

### Paddleboat_setPhysicalKeyboardStatusCallback

```scdoc
void Paddleboat_setPhysicalKeyboardStatusCallback(
  Paddleboat_PhysicalKeyboardStatusCallback statusCallback,
  void *userData
)
```
Set a callback to be called when the physical keyboard connection.

status changes. This is used to inform of connections or disconnections of a physical keyboard to the primary device.

| Details ||
|---|---|
| Parameters | |---|---| | `statusCallback` | function pointer to the keyboard status change callback, passing NULL or nullptr will remove any currently registered callback. | | `userData` | optional pointer (may be NULL or nullptr) to user data that will be passed as a parameter to the status callback. A reference to this pointer will be retained internally until changed by a future call to [Paddleboat_setPhysicalKeyboardStatusCallback](https://developer.android.com/reference/games/game-controller/group/paddleboat#group__paddleboat_1gae9ec414d5db72107f27d829d795d2deb) | |

### Paddleboat_update

```scdoc
void Paddleboat_update(
  JNIEnv *env
)
```
Updates internal Paddleboat status and processes pending connection/disconnections.

Paddleboat_update is responsible for triggering any registered controller or mouse status callbacks, those callbacks will fire on the same thread that called Paddleboat_update. This function should be called once per game frame. It is recommended to call Paddleboat_update before sending any new input events or reading controller inputs for a particular game frame.

| Details ||
|---|---|
| Parameters | |---|---| | `env` | The JNIEnv attached to the thread calling the function. | |

## Macros

### PADDLEBOAT_BUGFIX_VERSION

```scdoc
 PADDLEBOAT_BUGFIX_VERSION 0
```

### PADDLEBOAT_MAJOR_VERSION

```scdoc
 PADDLEBOAT_MAJOR_VERSION 2
```

### PADDLEBOAT_MAPPING_FILE_IDENTIFIER

```scdoc
 PADDLEBOAT_MAPPING_FILE_IDENTIFIER 0xadd1eb0a
```
The expected value in the `fileIdentifier` field of the `Paddleboat_Controller_Mapping_File_Header` for a valid mapping file.

### PADDLEBOAT_MAX_CONTROLLERS

```scdoc
 PADDLEBOAT_MAX_CONTROLLERS 8
```
Maximum number of simultaneously connected controllers.

### PADDLEBOAT_MINOR_VERSION

```scdoc
 PADDLEBOAT_MINOR_VERSION 1
```

### PADDLEBOAT_PACKED_VERSION

```scdoc
 PADDLEBOAT_PACKED_VERSION ANDROID_GAMESDK_PACKED_VERSION(PADDLEBOAT_MAJOR_VERSION, \
                                   PADDLEBOAT_MINOR_VERSION, \
                                   PADDLEBOAT_BUGFIX_VERSION)
```

### PADDLEBOAT_STRING_TABLE_ENTRY_MAX_SIZE

```scdoc
 PADDLEBOAT_STRING_TABLE_ENTRY_MAX_SIZE 64
```
The maximum number of characters, including the terminating character, allowed in a string table entry.