Require CONFIG_HID_PLAYSTATION for DualSense key layout
Some olders kernels don't yet support HID_PLAYSTATION. While they are working on supporting this driver, provide this temporary solution. Before this patch, if the key layout is loaded, but there is no HID_PLAYSTATION, then the mappings on the device will be incorrect. With this patch, this key layout will not be loaded unless there is a CONFIG_HID_PLAYSTATION enabled on the device. Instead, when the main layout cannot be loaded, we make another attempt to load a fallback layout. This way, the mappings on DualSense can be correct even if the HID_PLAYSTATION module is not loaded. In this CL, the fallback layout was tested using controllerTester. Bug: 228005926 Test: tested mappings with a DualSense controller on a device that does not have CONFIG_HID_PLAYSTATION Change-Id: I7e46ae1943cd2c63b8c0b03fdf5d71adeea89f6f Merged-In: I7e46ae1943cd2c63b8c0b03fdf5d71adeea89f6f
This commit is contained in:
parent
3e40b22290
commit
8169da18d8
@ -401,6 +401,7 @@ cc_library_shared {
|
||||
// (e.g. gDefaultServiceManager)
|
||||
"libbinder",
|
||||
"libhidlbase", // libhwbinder is in here
|
||||
"libvintf",
|
||||
],
|
||||
},
|
||||
},
|
||||
|
@ -16,6 +16,8 @@
|
||||
# Sony Playstation(R) DualSense Controller
|
||||
#
|
||||
|
||||
# Only use this key layout if we have HID_PLAYSTATION!
|
||||
requires_kernel_config CONFIG_HID_PLAYSTATION
|
||||
|
||||
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
|
||||
|
||||
|
75
data/keyboards/Vendor_054c_Product_0ce6_fallback.kl
Normal file
75
data/keyboards/Vendor_054c_Product_0ce6_fallback.kl
Normal file
@ -0,0 +1,75 @@
|
||||
# Copyright (C) 2022 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) DualSense Controller
|
||||
#
|
||||
|
||||
# Use this if HID_PLAYSTATION is not available
|
||||
|
||||
# Mapping according to https://developer.android.com/training/game-controllers/controller-input.html
|
||||
|
||||
# Square
|
||||
key 304 BUTTON_X
|
||||
# Cross
|
||||
key 305 BUTTON_A
|
||||
# Circle
|
||||
key 306 BUTTON_B
|
||||
# Triangle
|
||||
key 307 BUTTON_Y
|
||||
|
||||
key 308 BUTTON_L1
|
||||
key 309 BUTTON_R1
|
||||
key 310 BUTTON_L2
|
||||
key 311 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 314 BUTTON_THUMBL
|
||||
# Right stick click
|
||||
key 315 BUTTON_THUMBR
|
||||
|
||||
# Hat
|
||||
axis 0x10 HAT_X
|
||||
axis 0x11 HAT_Y
|
||||
|
||||
# Mapping according to https://www.kernel.org/doc/Documentation/input/gamepad.txt
|
||||
# Share / "half-sun"
|
||||
key 312 BUTTON_SELECT
|
||||
# Options / three horizontal lines
|
||||
key 313 BUTTON_START
|
||||
# PS key
|
||||
key 316 BUTTON_MODE
|
||||
|
||||
# Touchpad press
|
||||
key 317 BUTTON_1
|
||||
|
||||
# SENSORs
|
||||
sensor 0x00 ACCELEROMETER X
|
||||
sensor 0x01 ACCELEROMETER Y
|
||||
sensor 0x02 ACCELEROMETER Z
|
||||
sensor 0x03 GYROSCOPE X
|
||||
sensor 0x04 GYROSCOPE Y
|
||||
sensor 0x05 GYROSCOPE Z
|
@ -21,6 +21,7 @@ cc_binary_host {
|
||||
cflags: [
|
||||
"-Wall",
|
||||
"-Werror",
|
||||
"-Wextra",
|
||||
],
|
||||
|
||||
static_libs: [
|
||||
@ -31,6 +32,9 @@ cc_binary_host {
|
||||
"liblog",
|
||||
"libui-types",
|
||||
],
|
||||
shared_libs: [
|
||||
"libvintf",
|
||||
],
|
||||
target: {
|
||||
host_linux: {
|
||||
static_libs: [
|
||||
|
@ -141,6 +141,11 @@ static bool validateFile(const char* filename) {
|
||||
}
|
||||
base::Result<std::shared_ptr<KeyLayoutMap>> ret = KeyLayoutMap::load(filename);
|
||||
if (!ret.ok()) {
|
||||
if (ret.error().message() == "Missing kernel config") {
|
||||
// It means the layout is valid, but won't be loaded on this device because
|
||||
// this layout requires a certain kernel config.
|
||||
return true;
|
||||
}
|
||||
error("Error %s parsing key layout file.\n\n", ret.error().message().c_str());
|
||||
return false;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user