/* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "InternalControllerTable.h" #include #include #define ARRAY_COUNTOF(array) (sizeof(array) / sizeof(array[0])) #define PADDLEBOAT_AXIS_BUTTON_DPAD_UP 0 #define PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT 1 #define PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN 2 #define PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT 3 #define PADDLEBOAT_AXIS_BUTTON_L2 9 #define PADDLEBOAT_AXIS_BUTTON_R2 12 namespace paddleboat { static const Paddleboat_Controller_Mapping_Data pb_internal_controller_map[] = { // Microsoft Xbox 360 controller (usb) {16, 0, 0x0045e, 0x028e, PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ AKEYCODE_MEDIA_RECORD, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Microsoft Xbox One non-BT controller (usb) {16, 0, 0x0045e, 0x02d1, PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ AKEYCODE_MEDIA_RECORD, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // 8BitDo Arcade Stick, XInput mode, Bluetooth {16, 0, 0x0045e, 0x02e0, PADDLEBOAT_CONTROLLER_LAYOUT_ARCADE_STICK, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* LY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* LY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ PADDLEBOAT_BUTTON_IGNORED, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ PADDLEBOAT_BUTTON_IGNORED, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Microsoft Xbox One BT controller (usb) {16, 0, 0x0045e, 0x02ea, PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ AKEYCODE_MEDIA_RECORD, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Microsoft Xbox One BT controller (bluetooth) {16, 0, 0x0045e, 0x02fd, PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ AKEYCODE_MEDIA_RECORD, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Microsoft Xbox Series controller (usb) {16, 0, 0x0045e, 0x0b12, PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ AKEYCODE_MEDIA_RECORD, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Microsoft Xbox Series controller (bluetooth) {16, 0, 0x0045e, 0x0b13, PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ AKEYCODE_MEDIA_RECORD, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Sony PlayStation 4 controller (usb/bluetooth) {16, 0, 0x054C, 0x05C4, PADDLEBOAT_CONTROLLER_LAYOUT_SHAPES | PADDLEBOAT_CONTROLLER_FLAG_TOUCHPAD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Sony PlayStation 4 controller (usb/bluetooth) - alternate deviceId {16, 0, 0x054C, 0x09CC, PADDLEBOAT_CONTROLLER_LAYOUT_SHAPES | PADDLEBOAT_CONTROLLER_FLAG_TOUCHPAD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Sony PlayStation 5 controller (usb/bluetooth) API <= 30 {16, 30, 0x054C, 0x0ce6, PADDLEBOAT_CONTROLLER_LAYOUT_SHAPES, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_RX, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_RY, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_B, /* B */ AKEYCODE_BUTTON_C, /* X */ AKEYCODE_BUTTON_A, /* Y */ AKEYCODE_BUTTON_X, /* L1 */ AKEYCODE_BUTTON_Y, /* L2 */ PADDLEBOAT_BUTTON_IGNORED, /* L3 */ AKEYCODE_BUTTON_SELECT, /* R1 */ AKEYCODE_BUTTON_Z, /* R2 */ PADDLEBOAT_BUTTON_IGNORED, /* R3 */ AKEYCODE_BUTTON_START, /* SELECT */ AKEYCODE_BUTTON_L2, /* START */ AKEYCODE_BUTTON_R2, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ AKEYCODE_BUTTON_THUMBL, /* AUX1 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Sony PlayStation 5 controller (usb/bluetooth) API >= 31 {31, 0, 0x054C, 0x0ce6, PADDLEBOAT_CONTROLLER_LAYOUT_SHAPES | PADDLEBOAT_CONTROLLER_FLAG_TOUCHPAD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Nintendo Switch Pro controller (usb/bluetooth) {16, 0, 0x0057e, 0x2009, PADDLEBOAT_CONTROLLER_LAYOUT_REVERSE, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_B, /* B */ AKEYCODE_BUTTON_A, /* X */ AKEYCODE_BUTTON_Y, /* Y */ AKEYCODE_BUTTON_X, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ AKEYCODE_MEDIA_RECORD, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Nvidia Shield TV controller (usb) {16, 0, 0x0955, 0x7210, PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // Google Stadia controller (usb) {16, 0, 0x18d1, 0x9400, PADDLEBOAT_CONTROLLER_LAYOUT_STANDARD, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_L2, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_R2, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_L2, /* L3 */ AKEYCODE_BUTTON_THUMBL, /* R1 */ AKEYCODE_BUTTON_R1, /* R2 */ AKEYCODE_BUTTON_R2, /* R3 */ AKEYCODE_BUTTON_THUMBR, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ AKEYCODE_BUTTON_MODE, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}, // NeoGeo Pro, PC 2 setting, USB {16, 0, 0x20bc, 0x5501, PADDLEBOAT_CONTROLLER_LAYOUT_ARCADE_STICK, { /* LX */ AMOTION_EVENT_AXIS_X, /* LY */ AMOTION_EVENT_AXIS_Y, /* RX */ AMOTION_EVENT_AXIS_Z, /* RY */ AMOTION_EVENT_AXIS_RZ, /* L1 */ PADDLEBOAT_AXIS_IGNORED, /* L2 */ AMOTION_EVENT_AXIS_BRAKE, /* R1 */ PADDLEBOAT_AXIS_IGNORED, /* R2 */ AMOTION_EVENT_AXIS_GAS, /* HX */ AMOTION_EVENT_AXIS_HAT_X, /* HY */ AMOTION_EVENT_AXIS_HAT_Y, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_RIGHT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_DOWN, }, { /* LX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* LY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RX */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* RY */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* L2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R1 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* R2 */ PADDLEBOAT_AXIS_BUTTON_IGNORED, /* HX */ PADDLEBOAT_AXIS_BUTTON_DPAD_LEFT, /* HY */ PADDLEBOAT_AXIS_BUTTON_DPAD_UP, }, {/* UP */ AKEYCODE_DPAD_UP, /* LEFT */ AKEYCODE_DPAD_LEFT, /* DOWN */ AKEYCODE_DPAD_DOWN, /* RIGHT */ AKEYCODE_DPAD_RIGHT, /* A */ AKEYCODE_BUTTON_A, /* B */ AKEYCODE_BUTTON_B, /* X */ AKEYCODE_BUTTON_X, /* Y */ AKEYCODE_BUTTON_Y, /* L1 */ AKEYCODE_BUTTON_L1, /* L2 */ AKEYCODE_BUTTON_R1, /* L3 */ PADDLEBOAT_BUTTON_IGNORED, /* R1 */ AKEYCODE_BUTTON_Z, /* R2 */ AKEYCODE_BUTTON_C, /* R3 */ PADDLEBOAT_BUTTON_IGNORED, /* SELECT */ AKEYCODE_BUTTON_SELECT, /* START */ AKEYCODE_BUTTON_START, /* SYSTEM */ PADDLEBOAT_BUTTON_IGNORED, /* TOUCHP */ PADDLEBOAT_BUTTON_IGNORED, /* AUX1 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX2 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX3 */ PADDLEBOAT_BUTTON_IGNORED, /* AUX4 */ PADDLEBOAT_BUTTON_IGNORED}}}; const Paddleboat_Controller_Mapping_Data *GetInternalControllerData() { return pb_internal_controller_map; } int32_t GetInternalControllerDataCount() { const size_t count = ARRAY_COUNTOF(pb_internal_controller_map); return (static_cast(count)); } } // namespace paddleboat