From 046c6bbef0a2a5f208c80f0d4666411ce991ef4a Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Sun, 25 Apr 2021 21:44:45 -0400 Subject: ignore cfgmgr errors when retrieving device id --- wrapper/wrapper.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'wrapper') diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index 71a8cf6..5f44859 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -286,10 +286,15 @@ std::vector get_unique_device_info() { std::vector info; rawinput_foreach_with_interface([&](const auto& dev, const WCHAR* name) { - info.push_back({ - L"", // get_property_wstr(name, &DEVPKEY_Device_FriendlyName), /* doesn't work */ - dev_id_from_interface(name) - }); + auto id = dev_id_from_interface(name); + + if (!id.empty()) { + info.push_back({ + L"", // get_property_wstr(name, &DEVPKEY_Device_FriendlyName), /* doesn't work */ + id + }); + } + }); std::sort(info.begin(), info.end(), -- cgit v1.2.3 From 8de054735f51c6b933f4fadf7e7aa63c11971a68 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Mon, 26 Apr 2021 22:00:51 -0400 Subject: refactor rawinput util some generalizations here don't make sense now that we're ignoring errors --- wrapper/wrapper.cpp | 41 ++++------------------------------------- 1 file changed, 4 insertions(+), 37 deletions(-) (limited to 'wrapper') diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index 5f44859..50a3596 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -1,6 +1,5 @@ #pragma once -#include #include #include @@ -277,35 +276,6 @@ public: } }; -struct device_info { - std::wstring name; - std::wstring id; -}; - -std::vector get_unique_device_info() { - std::vector info; - - rawinput_foreach_with_interface([&](const auto& dev, const WCHAR* name) { - auto id = dev_id_from_interface(name); - - if (!id.empty()) { - info.push_back({ - L"", // get_property_wstr(name, &DEVPKEY_Device_FriendlyName), /* doesn't work */ - id - }); - } - - }); - - std::sort(info.begin(), info.end(), - [](auto&& l, auto&& r) { return l.id < r.id; }); - auto last = std::unique(info.begin(), info.end(), - [](auto&& l, auto&& r) { return l.id == r.id; }); - info.erase(last, info.end()); - - return info; -} - public ref struct RawInputInterop { static void AddHandlesFromID(String^ deviceID, List^ rawInputHandles) @@ -323,18 +293,15 @@ public ref struct RawInputInterop } } - static List>^ GetDeviceIDs() + static List^ GetDeviceIDs() { try { - auto managed = gcnew List>(); + auto managed = gcnew List(); - for (auto&& [name, id] : get_unique_device_info()) + for (auto&& id : rawinput_dev_id_list()) { - managed->Add( - ValueTuple( - msclr::interop::marshal_as(name), - msclr::interop::marshal_as(id))); + managed->Add(msclr::interop::marshal_as(id)); } return managed; -- cgit v1.2.3