input: cleanup device naming logic

ref #8301
This commit is contained in:
Vaxry 2024-11-09 01:53:01 +00:00
parent 3b66351eeb
commit 4c7a2faf85
7 changed files with 11 additions and 32 deletions

View file

@ -36,5 +36,5 @@ class IHID {
CSignal destroy; CSignal destroy;
} events; } events;
std::string deviceName; std::string deviceName, hlName;
}; };

View file

@ -94,7 +94,6 @@ class IKeyboard : public IHID {
std::array<xkb_mod_index_t, 8> modIndexes = {XKB_MOD_INVALID}; std::array<xkb_mod_index_t, 8> modIndexes = {XKB_MOD_INVALID};
uint32_t leds = 0; uint32_t leds = 0;
std::string hlName = "";
std::string xkbFilePath = ""; std::string xkbFilePath = "";
std::string xkbKeymapString = ""; std::string xkbKeymapString = "";
int xkbKeymapFD = -1; int xkbKeymapFD = -1;

View file

@ -104,7 +104,6 @@ class IPointer : public IHID {
CSignal holdEnd; CSignal holdEnd;
} pointerEvents; } pointerEvents;
std::string hlName;
bool connected = false; // means connected to the cursor bool connected = false; // means connected to the cursor
std::string boundOutput = ""; std::string boundOutput = "";

View file

@ -44,7 +44,6 @@ class ITouch : public IHID {
CSignal frame; CSignal frame;
} touchEvents; } touchEvents;
std::string hlName = "";
std::string boundOutput = ""; std::string boundOutput = "";
WP<ITouch> self; WP<ITouch> self;

View file

@ -92,7 +92,6 @@ class CTablet : public IHID {
WP<CTablet> self; WP<CTablet> self;
bool relativeInput = false; bool relativeInput = false;
std::string hlName = "";
std::string boundOutput = ""; std::string boundOutput = "";
CBox activeArea; CBox activeArea;
CBox boundBox; // output-local CBox boundBox; // output-local
@ -154,8 +153,6 @@ class CTabletPad : public IHID {
WP<CTabletPad> self; WP<CTabletPad> self;
WP<CTabletTool> parent; WP<CTabletTool> parent;
std::string hlName;
private: private:
CTabletPad(SP<Aquamarine::ITabletPad> pad); CTabletPad(SP<Aquamarine::ITabletPad> pad);
@ -210,8 +207,6 @@ class CTabletTool : public IHID {
std::vector<uint32_t> buttonsDown; std::vector<uint32_t> buttonsDown;
Vector2D absolutePos; // last known absolute position. Vector2D absolutePos; // last known absolute position.
std::string hlName;
private: private:
CTabletTool(SP<Aquamarine::ITabletTool> tool); CTabletTool(SP<Aquamarine::ITabletTool> tool);

View file

@ -1655,31 +1655,12 @@ std::string CInputManager::getNameForNewDevice(std::string internalName) {
auto proposedNewName = deviceNameToInternalString(internalName); auto proposedNewName = deviceNameToInternalString(internalName);
int dupeno = 0; int dupeno = 0;
while (std::find_if(m_vKeyboards.begin(), m_vKeyboards.end(), auto makeNewName = [&]() { return (proposedNewName.empty() ? "unknown-device" : proposedNewName) + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); };
[&](const auto& other) { return other->hlName == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_vKeyboards.end())
while (std::find_if(m_vHIDs.begin(), m_vHIDs.end(), [&](const auto& other) { return other->hlName == makeNewName(); }) != m_vHIDs.end())
dupeno++; dupeno++;
while (std::find_if(m_vPointers.begin(), m_vPointers.end(), return makeNewName();
[&](const auto& other) { return other->hlName == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_vPointers.end())
dupeno++;
while (std::find_if(m_vTouches.begin(), m_vTouches.end(),
[&](const auto& other) { return other->hlName == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_vTouches.end())
dupeno++;
while (std::find_if(m_vTabletPads.begin(), m_vTabletPads.end(),
[&](const auto& other) { return other->hlName == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_vTabletPads.end())
dupeno++;
while (std::find_if(m_vTablets.begin(), m_vTablets.end(),
[&](const auto& other) { return other->hlName == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_vTablets.end())
dupeno++;
while (std::find_if(m_vTabletTools.begin(), m_vTabletTools.end(),
[&](const auto& other) { return other->hlName == proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno))); }) != m_vTabletTools.end())
dupeno++;
return proposedNewName + (dupeno == 0 ? "" : ("-" + std::to_string(dupeno)));
} }
void CInputManager::releaseAllMouseButtons() { void CInputManager::releaseAllMouseButtons() {

View file

@ -228,6 +228,12 @@ SP<CTabletTool> CInputManager::ensureTabletToolPresent(SP<Aquamarine::ITabletToo
const auto PTOOL = m_vTabletTools.emplace_back(CTabletTool::create(pTool)); const auto PTOOL = m_vTabletTools.emplace_back(CTabletTool::create(pTool));
m_vHIDs.push_back(PTOOL); m_vHIDs.push_back(PTOOL);
try {
PTOOL->hlName = deviceNameToInternalString(pTool->getName());
} catch (std::exception& e) {
Debug::log(ERR, "Tablet had no name???"); // logic error
}
PTOOL->events.destroy.registerStaticListener( PTOOL->events.destroy.registerStaticListener(
[this](void* owner, std::any d) { [this](void* owner, std::any d) {
auto TOOL = ((CTabletTool*)owner)->self; auto TOOL = ((CTabletTool*)owner)->self;