Added mapping files for DualShock3 and DualShock4

All buttons and axes on DualShock3 and DualShock4 are mapped
explicitly, because some Linux drivers do not map them correctly.
Also, the definition of BUTTON_X/Y in Linux and Android is flipped.

The most significant bit (i.e. 0x8000 and 0x8111) in the "Version"
part of the filename indicates a newer Linux hid-sony driver (>=4.10
for DualShock4 and >=4.12 for DualShock3) which complies to the
mapping in Linux gamepad specifications, and supports all DualShock4
features (i.e. motions sensors, touchpad).

Older Linux driver which does not have the correct mapping will use
the mapping files without "Version".

All files with "Version_8000" and "Version_8100" are meant for
Bluetooth connected DualShock3/DualShock4, and all files with
"Version_8111" are meant for USB connected DualShock3/DualShock4.

Test: Connect DualShock3 and DualShock4, over USB and over Bluetooth.
Test: Check that the Dpad and left analog stick can be used to
      navigate the UI.
Test: If newer Linux driver is loaded, check that the touchpad can
      be used to navigate the UI.
Bug: 38511270
Change-Id: I5630c495af16185689bbff25943b3e2d3c93e709
This commit is contained in:
Kim Low
2017-04-04 13:32:19 -07:00
parent f9fa9a63bb
commit 0a5109d955
14 changed files with 724 additions and 7 deletions

View File

@@ -21,8 +21,6 @@ key 0x125 DPAD_RIGHT
key 0x126 DPAD_DOWN
key 0x127 DPAD_LEFT
key 0x120 BUTTON_SELECT
key 0x123 BUTTON_START
key 0x12e BUTTON_A
key 0x12d BUTTON_B
key 0x12f BUTTON_X
@@ -34,9 +32,6 @@ key 0x129 BUTTON_R2
key 0x121 BUTTON_THUMBL
key 0x122 BUTTON_THUMBR
# PS key
key 0x2d0 BUTTON_MODE
# Left Analog Stick
axis 0x00 X
axis 0x01 Y
@@ -74,3 +69,11 @@ axis 0x31 RTRIGGER
# Square
# axis 0x37
# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt
# Select
key 0x120 BUTTON_SELECT
# Start
key 0x123 BUTTON_START
# PS key
key 0x2d0 BUTTON_MODE

View File

@@ -0,0 +1,57 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R)3 Controller
# - Version 0x8000 and 0x8100 are for Linux hid-sony driver >=4.12
# and when connected over Bluetooth
#
key 0x220 DPAD_UP
key 0x223 DPAD_RIGHT
key 0x221 DPAD_DOWN
key 0x222 DPAD_LEFT
key 0x130 BUTTON_A
key 0x131 BUTTON_B
key 0x134 BUTTON_X
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
key 0x13d BUTTON_THUMBL
key 0x13e BUTTON_THUMBR
# left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# L2 trigger
axis 0x02 LTRIGGER
# R2 trigger
axis 0x05 RTRIGGER
# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt
# Select
key 0x13a BUTTON_SELECT
# Start
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE

View File

@@ -0,0 +1,57 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R)3 Controller
# - Version 0x8000 and 0x8100 are for Linux hid-sony driver >=4.12
# and when connected over Bluetooth
#
key 0x220 DPAD_UP
key 0x223 DPAD_RIGHT
key 0x221 DPAD_DOWN
key 0x222 DPAD_LEFT
key 0x130 BUTTON_A
key 0x131 BUTTON_B
key 0x134 BUTTON_X
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
key 0x13d BUTTON_THUMBL
key 0x13e BUTTON_THUMBR
# left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# L2 trigger
axis 0x02 LTRIGGER
# R2 trigger
axis 0x05 RTRIGGER
# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt
# Select
key 0x13a BUTTON_SELECT
# Start
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE

View File

@@ -0,0 +1,57 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R)3 Controller
# - Version 0x8111 is for Linux hid-sony driver >=4.12 and when
# connected over USB
#
key 0x220 DPAD_UP
key 0x223 DPAD_RIGHT
key 0x221 DPAD_DOWN
key 0x222 DPAD_LEFT
key 0x130 BUTTON_A
key 0x131 BUTTON_B
key 0x134 BUTTON_X
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
key 0x13d BUTTON_THUMBL
key 0x13e BUTTON_THUMBR
# left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# L2 trigger
axis 0x02 LTRIGGER
# R2 trigger
axis 0x05 RTRIGGER
# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt
# Select
key 0x13a BUTTON_SELECT
# Start
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE

View File

@@ -60,7 +60,6 @@ axis 0x11 HAT_Y
key 0x138 BUTTON_SELECT
# Options
key 0x139 BUTTON_START
# PS key
key 0x13c BUTTON_MODE

View File

@@ -0,0 +1,68 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R) DualShock 4 Controller
# - Version 0x8000 and 0x8100 are for Linux hid-sony driver >=4.10
# and when connected over Bluetooth
#
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
# Square
key 0x134 BUTTON_X
# Cross
key 0x130 BUTTON_A
# Circle
key 0x131 BUTTON_B
# Triangle
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
# L2 axis
axis 0x02 LTRIGGER
# R2 axis
axis 0x05 RTRIGGER
# Left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# Left stick click
key 0x13d BUTTON_THUMBL
# Right stick click
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
# Share
key 0x13a BUTTON_SELECT
# Options
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE
# In kernel versions >= 4.10, the touchpad is a separate input device,
# so the touchpad button click will not be covered by this layout.

View File

@@ -0,0 +1,68 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R) DualShock 4 Controller
# - Version 0x8000 and 0x8100 are for Linux hid-sony driver >=4.10
# and when connected over Bluetooth
#
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
# Square
key 0x134 BUTTON_X
# Cross
key 0x130 BUTTON_A
# Circle
key 0x131 BUTTON_B
# Triangle
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
# L2 axis
axis 0x02 LTRIGGER
# R2 axis
axis 0x05 RTRIGGER
# Left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# Left stick click
key 0x13d BUTTON_THUMBL
# Right stick click
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
# Share
key 0x13a BUTTON_SELECT
# Options
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE
# In kernel versions >= 4.10, the touchpad is a separate input device,
# so the touchpad button click will not be covered by this layout.

View File

@@ -0,0 +1,68 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R) DualShock 4 Controller
# - Version 0x8111 is for Linux hid-sony driver >=4.10 and when
# connected over USB
#
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
# Square
key 0x134 BUTTON_X
# Cross
key 0x130 BUTTON_A
# Circle
key 0x131 BUTTON_B
# Triangle
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
# L2 axis
axis 0x02 LTRIGGER
# R2 axis
axis 0x05 RTRIGGER
# Left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# Left stick click
key 0x13d BUTTON_THUMBL
# Right stick click
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
# Share
key 0x13a BUTTON_SELECT
# Options
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE
# In kernel versions >= 4.10, the touchpad is a separate input device,
# so the touchpad button click will not be covered by this layout.

View File

@@ -60,7 +60,6 @@ axis 0x11 HAT_Y
key 0x138 BUTTON_SELECT
# Options
key 0x139 BUTTON_START
# PS key
key 0x13c BUTTON_MODE

View File

@@ -0,0 +1,68 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R) DualShock 4 Controller
# - Version 0x8000 and 0x8100 are for Linux hid-sony driver >=4.10
# and when connected over Bluetooth
#
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
# Square
key 0x134 BUTTON_X
# Cross
key 0x130 BUTTON_A
# Circle
key 0x131 BUTTON_B
# Triangle
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
# L2 axis
axis 0x02 LTRIGGER
# R2 axis
axis 0x05 RTRIGGER
# Left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# Left stick click
key 0x13d BUTTON_THUMBL
# Right stick click
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
# Share
key 0x13a BUTTON_SELECT
# Options
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE
# In kernel versions >= 4.10, the touchpad is a separate input device,
# so the touchpad button click will not be covered by this layout.

View File

@@ -0,0 +1,68 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R) DualShock 4 Controller
# - Version 0x8000 and 0x8100 are for Linux hid-sony driver >=4.10
# and when connected over Bluetooth
#
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
# Square
key 0x134 BUTTON_X
# Cross
key 0x130 BUTTON_A
# Circle
key 0x131 BUTTON_B
# Triangle
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
# L2 axis
axis 0x02 LTRIGGER
# R2 axis
axis 0x05 RTRIGGER
# Left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# Left stick click
key 0x13d BUTTON_THUMBL
# Right stick click
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
# Share
key 0x13a BUTTON_SELECT
# Options
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE
# In kernel versions >= 4.10, the touchpad is a separate input device,
# so the touchpad button click will not be covered by this layout.

View File

@@ -0,0 +1,68 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R) DualShock 4 Controller
# - Version 0x8111 is for Linux hid-sony driver >=4.10 and when
# connected over USB
#
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
# Square
key 0x134 BUTTON_X
# Cross
key 0x130 BUTTON_A
# Circle
key 0x131 BUTTON_B
# Triangle
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
# L2 axis
axis 0x02 LTRIGGER
# R2 axis
axis 0x05 RTRIGGER
# Left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# Left stick click
key 0x13d BUTTON_THUMBL
# Right stick click
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
# Share
key 0x13a BUTTON_SELECT
# Options
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE
# In kernel versions >= 4.10, the touchpad is a separate input device,
# so the touchpad button click will not be covered by this layout.

View File

@@ -0,0 +1,70 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R) DualShock 4 USB Dongle
#
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
# Square
key 0x130 BUTTON_X
# Cross
key 0x131 BUTTON_A
# Circle
key 0x132 BUTTON_B
# Triangle
key 0x133 BUTTON_Y
key 0x134 BUTTON_L1
key 0x135 BUTTON_R1
key 0x136 BUTTON_L2
key 0x137 BUTTON_R2
# L2 axis
axis 0x03 LTRIGGER
# R2 axis
axis 0x04 RTRIGGER
# Left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x02 Z
axis 0x05 RZ
# Left stick click
key 0x13a BUTTON_THUMBL
# Right stick click
key 0x13b BUTTON_THUMBR
# Hat
axis 0x10 HAT_X
axis 0x11 HAT_Y
# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt
# Share
key 0x138 BUTTON_SELECT
# Options
key 0x139 BUTTON_START
# PS key
key 0x13c BUTTON_MODE
# Touchpad press
# The touchpad for this joystick will become a separate input device in future releases
# and this button will be equivalent to left mouse button
# Therefore, map it to KEYCODE_BUTTON_1 here to allow apps to still handle this on earlier versions
key 0x13d BUTTON_1

View File

@@ -0,0 +1,67 @@
# Copyright (C) 2018 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.
#
# Sony Playstation(R) DualShock 4 USB Dongle
# - Version 0x8111 is for Linux hid-sony driver >=4.10
#
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
# Square
key 0x134 BUTTON_X
# Cross
key 0x130 BUTTON_A
# Circle
key 0x131 BUTTON_B
# Triangle
key 0x133 BUTTON_Y
key 0x136 BUTTON_L1
key 0x137 BUTTON_R1
key 0x138 BUTTON_L2
key 0x139 BUTTON_R2
# L2 axis
axis 0x02 LTRIGGER
# R2 axis
axis 0x05 RTRIGGER
# Left Analog Stick
axis 0x00 X
axis 0x01 Y
# Right Analog Stick
axis 0x03 Z
axis 0x04 RZ
# Left stick click
key 0x13d BUTTON_THUMBL
# Right stick click
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
# Share
key 0x13a BUTTON_SELECT
# Options
key 0x13b BUTTON_START
# PS key
key 0x13c BUTTON_MODE
# In kernel versions >= 4.10, the touchpad is a separate input device,
# so the touchpad button click will not be covered by this layout.