diff --git a/core/jni/Android.bp b/core/jni/Android.bp index a1be88440c97..aa661713b1fe 100644 --- a/core/jni/Android.bp +++ b/core/jni/Android.bp @@ -401,6 +401,7 @@ cc_library_shared { // (e.g. gDefaultServiceManager) "libbinder", "libhidlbase", // libhwbinder is in here + "libvintf", ], }, }, diff --git a/data/keyboards/Vendor_054c_Product_0ce6.kl b/data/keyboards/Vendor_054c_Product_0ce6.kl index 4d51a9ecdce2..411dd9521921 100644 --- a/data/keyboards/Vendor_054c_Product_0ce6.kl +++ b/data/keyboards/Vendor_054c_Product_0ce6.kl @@ -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 diff --git a/data/keyboards/Vendor_054c_Product_0ce6_fallback.kl b/data/keyboards/Vendor_054c_Product_0ce6_fallback.kl new file mode 100644 index 000000000000..d1a364ce8c86 --- /dev/null +++ b/data/keyboards/Vendor_054c_Product_0ce6_fallback.kl @@ -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 diff --git a/tools/validatekeymaps/Android.bp b/tools/validatekeymaps/Android.bp index ff24d160b917..25373f9e9e2f 100644 --- a/tools/validatekeymaps/Android.bp +++ b/tools/validatekeymaps/Android.bp @@ -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: [ diff --git a/tools/validatekeymaps/Main.cpp b/tools/validatekeymaps/Main.cpp index 817effd24a2d..0d7d5f949a08 100644 --- a/tools/validatekeymaps/Main.cpp +++ b/tools/validatekeymaps/Main.cpp @@ -141,6 +141,11 @@ static bool validateFile(const char* filename) { } base::Result> 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; }