From 62f53bbb9276631d7651e1b8b330ea7e2201c1c2 Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Mon, 20 Jan 2025 15:43:58 -0500 Subject: [PATCH] fix: check bsdpath for evdev fixes #8112 --- src/lib/deskflow/unix/AppUtilUnix.cpp | 10 ++++++++-- src/lib/deskflow/unix/AppUtilUnix.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib/deskflow/unix/AppUtilUnix.cpp b/src/lib/deskflow/unix/AppUtilUnix.cpp index a6485201e..978ceb8d0 100644 --- a/src/lib/deskflow/unix/AppUtilUnix.cpp +++ b/src/lib/deskflow/unix/AppUtilUnix.cpp @@ -18,6 +18,7 @@ #include "deskflow/unix/AppUtilUnix.h" #include "deskflow/ArgsBase.h" +#include #include #if WINAPI_XWINDOWS @@ -65,7 +66,12 @@ std::vector AppUtilUnix::getKeyboardLayoutList() std::vector layoutLangCodes; #if WINAPI_XWINDOWS - layoutLangCodes = X11LayoutsParser::getX11LanguageList("/usr/share/X11/xkb/rules/evdev.xml"); + // Check /usr/local first used on bsd and some systems + m_evdev = "/usr/local/share/X11/xkb/rules/evdev.xml"; + if (!std::filesystem::exists(m_evdev)) + m_evdev = "/usr/share/X11/xkb/rules/evdev.xml"; + layoutLangCodes = X11LayoutsParser::getX11LanguageList(m_evdev); + #elif WINAPI_CARBON CFStringRef keys[] = {kTISPropertyInputSourceCategory}; CFStringRef values[] = {kTISCategoryKeyboardInputSource}; @@ -146,7 +152,7 @@ std::string AppUtilUnix::getCurrentLanguageCode() XFree(kbdDescr); XCloseDisplay(display); - result = X11LayoutsParser::convertLayotToISO("/usr/share/X11/xkb/rules/evdev.xml", result); + result = X11LayoutsParser::convertLayotToISO(m_evdev, result); #elif WINAPI_CARBON auto layoutLanguages = diff --git a/src/lib/deskflow/unix/AppUtilUnix.h b/src/lib/deskflow/unix/AppUtilUnix.h index 3e6204a71..65d646bc3 100644 --- a/src/lib/deskflow/unix/AppUtilUnix.h +++ b/src/lib/deskflow/unix/AppUtilUnix.h @@ -35,4 +35,5 @@ public: std::vector getKeyboardLayoutList() override; std::string getCurrentLanguageCode() override; void showNotification(const std::string &title, const std::string &text) const override; + std::string m_evdev; };