# Copyright (C) 2019 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
#
#      http://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.

#
# Microsoft X-Box One Elite Pad - Model 1698 - USB
#

# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html

key 0x130   BUTTON_A
key 0x131   BUTTON_B
key 0x133   BUTTON_X
key 0x134   BUTTON_Y

key 0x136   BUTTON_L1
key 0x137   BUTTON_R1

# Triggers.
axis 0x02 LTRIGGER
axis 0x05 RTRIGGER

# Left stick
axis 0x00 X
axis 0x01 Y
# Right stick
axis 0x03 Z
axis 0x04 RZ

key 0x13d   BUTTON_THUMBL
key 0x13e   BUTTON_THUMBR

# Hat.
axis 0x10 HAT_X
axis 0x11 HAT_Y


# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt

# Two overlapping rectangles
key 0x13a   BUTTON_SELECT
# Hamburger - 3 parallel lines
key 0x13b   BUTTON_START

# Xbox key
key 0x13c   BUTTON_MODE
