summaryrefslogtreecommitdiff
path: root/tools/validatekeymaps/Main.cpp
diff options
context:
space:
mode:
author Siarhei Vishniakou <svv@google.com> 2022-05-18 13:34:55 -0700
committer Siarhei Vishniakou <svv@google.com> 2022-06-10 08:09:58 -0700
commit1345d656a2740079b95ff360e755c07962ce70a8 (patch)
treeb43332125cbde1584397e86f61293ec853d6d43e /tools/validatekeymaps/Main.cpp
parent030c47cbfb8f2f46cd0a5a0e772b2a794cf586d8 (diff)
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 Merged-In: I7e46ae1943cd2c63b8c0b03fdf5d71adeea89f6f Change-Id: I7e46ae1943cd2c63b8c0b03fdf5d71adeea89f6f
Diffstat (limited to 'tools/validatekeymaps/Main.cpp')
-rw-r--r--tools/validatekeymaps/Main.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/validatekeymaps/Main.cpp b/tools/validatekeymaps/Main.cpp
index 991b28071515..cbfdfe4d89c4 100644
--- a/tools/validatekeymaps/Main.cpp
+++ b/tools/validatekeymaps/Main.cpp
@@ -97,6 +97,11 @@ static bool validateFile(const char* filename) {
case FileType::KEY_LAYOUT: {
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;
}