fix: check bsdpath for evdev fixes #8112

This commit is contained in:
sithlord48 2025-01-20 15:43:58 -05:00 committed by Chris Rizzitello
parent f49f616ad6
commit 62f53bbb92
2 changed files with 9 additions and 2 deletions

View file

@ -18,6 +18,7 @@
#include "deskflow/unix/AppUtilUnix.h" #include "deskflow/unix/AppUtilUnix.h"
#include "deskflow/ArgsBase.h" #include "deskflow/ArgsBase.h"
#include <filesystem>
#include <thread> #include <thread>
#if WINAPI_XWINDOWS #if WINAPI_XWINDOWS
@ -65,7 +66,12 @@ std::vector<std::string> AppUtilUnix::getKeyboardLayoutList()
std::vector<std::string> layoutLangCodes; std::vector<std::string> layoutLangCodes;
#if WINAPI_XWINDOWS #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 #elif WINAPI_CARBON
CFStringRef keys[] = {kTISPropertyInputSourceCategory}; CFStringRef keys[] = {kTISPropertyInputSourceCategory};
CFStringRef values[] = {kTISCategoryKeyboardInputSource}; CFStringRef values[] = {kTISCategoryKeyboardInputSource};
@ -146,7 +152,7 @@ std::string AppUtilUnix::getCurrentLanguageCode()
XFree(kbdDescr); XFree(kbdDescr);
XCloseDisplay(display); XCloseDisplay(display);
result = X11LayoutsParser::convertLayotToISO("/usr/share/X11/xkb/rules/evdev.xml", result); result = X11LayoutsParser::convertLayotToISO(m_evdev, result);
#elif WINAPI_CARBON #elif WINAPI_CARBON
auto layoutLanguages = auto layoutLanguages =

View file

@ -35,4 +35,5 @@ public:
std::vector<std::string> getKeyboardLayoutList() override; std::vector<std::string> getKeyboardLayoutList() override;
std::string getCurrentLanguageCode() override; std::string getCurrentLanguageCode() override;
void showNotification(const std::string &title, const std::string &text) const override; void showNotification(const std::string &title, const std::string &text) const override;
std::string m_evdev;
}; };