diff --git a/Common/UI/Notice.h b/Common/UI/Notice.h index 9ff421815427..e35710ae76d2 100644 --- a/Common/UI/Notice.h +++ b/Common/UI/Notice.h @@ -40,6 +40,9 @@ class NoticeView : public UI::InertView { void SetWrapText(bool wrapText) { wrapText_ = wrapText; } + void SetDetailsText(std::string_view detailsText) { + detailsText_ = detailsText; + } void GetContentDimensionsBySpec(const UIContext &dc, UI::MeasureSpec horiz, UI::MeasureSpec vert, float &w, float &h) const override; void Draw(UIContext &dc) override; diff --git a/Common/UI/PopupScreens.cpp b/Common/UI/PopupScreens.cpp index bb8b97d033d9..2535899b624e 100644 --- a/Common/UI/PopupScreens.cpp +++ b/Common/UI/PopupScreens.cpp @@ -833,7 +833,7 @@ std::string PopupTextInputChoice::ValueText(bool *shadow) const { } } -ViewGroup *CreateSoftKeyboard(TextEdit *edit, bool *upperCase) { +ViewGroup *CreateSoftKeyboard(TextEdit *edit, SoftKeyboardState *state) { ScrollView *scrollView = new ScrollView(ORIENT_HORIZONTAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT)); LinearLayout *keyboard = scrollView->Add(new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(WRAP_CONTENT, WRAP_CONTENT))); @@ -841,17 +841,20 @@ ViewGroup *CreateSoftKeyboard(TextEdit *edit, bool *upperCase) { static struct { std::string_view v; const char *tag; } kbRows[] = { - {"1234567890-=", "A"}, - {"qwertyuiop'[]", "L"}, - {"asdfghjkl()", "L"}, + {"1234567890-_", "A"}, + {"qwertyuiop", "L"}, + {"asdfghjkl", "L"}, {"zxcvbnm,.", "L"}, - {"QWERTYUIOP'[]", "U"}, - {"ASDFGHJKL()", "U"}, + {"QWERTYUIOP", "U"}, + {"ASDFGHJKL", "U"}, {"ZXCVBNM,.", "U"}, + {"@#$_&()/-+_", "S"}, + {"*\"':;!?[]", "S"}, + {"={}~<>|", "S"}, {"", "A"}, }; static const float space[] = { - 0.0f, 10.0f, 20.0f, 30.0f, 10.0f, 20.0f, 30.0f, 30.0f, + 0.0f, 10.0f, 20.0f, 30.0f, 10.0f, 20.0f, 30.0f, 10.0f, 20.0f, 30.0f, 30.0f, }; static_assert(ARRAY_SIZE(kbRows) == ARRAY_SIZE(space)); @@ -871,8 +874,9 @@ ViewGroup *CreateSoftKeyboard(TextEdit *edit, bool *upperCase) { bool visible = false; switch (kbRows[i].tag[0]) { - case 'L': visible = !(*upperCase); break; - case 'U': visible = *upperCase; break; + case 'L': visible = (*state == SoftKeyboardState::Lower); break; + case 'U': visible = (*state == SoftKeyboardState::Upper); break; + case 'S': visible = (*state == SoftKeyboardState::Symbols); break; case 'A': visible = true; break; default: visible = false; break; } @@ -885,16 +889,20 @@ ViewGroup *CreateSoftKeyboard(TextEdit *edit, bool *upperCase) { edit->Backspace(); }); break; - case 7: + case 10: // Special keys. - row->Add(new Button("Aa", new LinearLayoutParams(80.0f, 50.0f)))->OnClick.Add([keyboard, upperCase](EventParams &) { - *upperCase = !(*upperCase); + row->Add(new Button("Aa", new LinearLayoutParams(80.0f, 50.0f)))->OnClick.Add([keyboard, state](EventParams &) { + *state = (SoftKeyboardState)((int)*state + 1); + if (*state == SoftKeyboardState::MAX) { + *state = SoftKeyboardState::Upper; + } // Work through visibility. for (int i = 0; i < keyboard->GetNumSubviews(); i++) { LinearLayout *row = (LinearLayout *)keyboard->GetViewByIndex(i); switch (row->Tag()[0]) { - case 'L': row->SetVisibility(*upperCase ? V_GONE : V_VISIBLE); break; - case 'U': row->SetVisibility(*upperCase ? V_VISIBLE : V_GONE); break; + case 'L': row->SetVisibility((*state == SoftKeyboardState::Lower) ? V_VISIBLE : V_GONE); break; + case 'U': row->SetVisibility((*state == SoftKeyboardState::Upper) ? V_VISIBLE : V_GONE); break; + case 'S': row->SetVisibility((*state == SoftKeyboardState::Symbols) ? V_VISIBLE : V_GONE); break; case 'A': row->SetVisibility(V_VISIBLE); break; default: row->SetVisibility(V_GONE); break; } @@ -930,7 +938,7 @@ void TextEditPopupScreen::CreatePopupContents(UI::ViewGroup *parent) { parent->Add(new Spacer(8.0f)); - keyboard_ = parent->Add(CreateSoftKeyboard(edit_, &upperCase_)); + keyboard_ = parent->Add(CreateSoftKeyboard(edit_, &kbState_)); if (System_GetPropertyBool(SYSPROP_HAS_KEYBOARD)) { keyboard_->SetVisibility(V_GONE); lin->Add(new Spacer(5.0f)); diff --git a/Common/UI/PopupScreens.h b/Common/UI/PopupScreens.h index 739f0bc573ae..2491417c78ca 100644 --- a/Common/UI/PopupScreens.h +++ b/Common/UI/PopupScreens.h @@ -222,7 +222,14 @@ class SliderFloatPopupScreen : public PopupScreen { bool liveUpdate_; }; -ViewGroup *CreateSoftKeyboard(TextEdit *edit, bool *upperCase); +enum class SoftKeyboardState { + Upper = 0, + Lower, + Symbols, + MAX, +}; + +ViewGroup *CreateSoftKeyboard(TextEdit *edit, SoftKeyboardState *state); class TextEditPopupScreen : public PopupScreen { public: @@ -249,7 +256,7 @@ class TextEditPopupScreen : public PopupScreen { std::string textEditValue_; std::string placeholder_; int maxLen_; - bool upperCase_ = false; + SoftKeyboardState kbState_{}; bool passwordMasking_ = false; }; diff --git a/Core/Config.cpp b/Core/Config.cpp index 64e1feff4792..e7fd30d525ca 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -1038,6 +1038,12 @@ static const ConfigSetting controlSettings[] = { ConfigSetting("SystemControls", SETTING(g_Config, bSystemControls), true, CfgFlag::DEFAULT), ConfigSetting("RapidFileInterval", SETTING(g_Config, iRapidFireInterval), 5, CfgFlag::DEFAULT), + +#if PPSSPP_PLATFORM(WINDOWS) + ConfigSetting("AllowHIDInput", SETTING(g_Config, bAllowHIDInput), true, CfgFlag::DEFAULT), + ConfigSetting("AllowXInput", SETTING(g_Config, bAllowXInput), true, CfgFlag::DEFAULT), + ConfigSetting("AllowDInput", SETTING(g_Config, bAllowDInput), true, CfgFlag::DEFAULT), +#endif }; static const std::vector emptyList; diff --git a/Core/Config.h b/Core/Config.h index 1f6ad2209b97..87f9f4d4d17a 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -532,6 +532,11 @@ struct Config : public ConfigBlock { float fMouseSmoothing; int iMouseWheelUpDelayMs; + // Crude Windows controller filter. + bool bAllowHIDInput; + bool bAllowXInput; + bool bAllowDInput; + bool bSystemControls; int iRapidFireInterval; diff --git a/UI/CwCheatScreen.cpp b/UI/CwCheatScreen.cpp index 24ab8b184bb3..3c9590efb73a 100644 --- a/UI/CwCheatScreen.cpp +++ b/UI/CwCheatScreen.cpp @@ -101,10 +101,8 @@ void CwCheatScreen::CreateSettingsViews(UI::ViewGroup *leftColumn) { std::string title = StringFromFormat(cw->T_cstr("Import from %s"), "PSP/Cheats/cheat.db"); - leftColumn->Add(new Choice(title.c_str()))->OnClick.Handle(this, &CwCheatScreen::OnImportCheat); + leftColumn->Add(new Choice(title))->OnClick.Handle(this, &CwCheatScreen::OnImportCheat); leftColumn->Add(new Choice(mm->T("Browse"), ImageID("I_FOLDER_OPEN")))->OnClick.Handle(this, &CwCheatScreen::OnImportBrowse); - errorMessageView_ = leftColumn->Add(new TextView(di->T("LoadingFailed"))); - errorMessageView_->SetVisibility(V_GONE); leftColumn->Add(new ItemHeader(di->T("Options"))); #if !defined(MOBILE_DEVICE) @@ -127,7 +125,14 @@ void CwCheatScreen::CreateContentViews(UI::ViewGroup *parent) { LinearLayout *rightColumn = new LinearLayoutList(ORIENT_VERTICAL, new LinearLayoutParams(200, FILL_PARENT)); rightColumn->SetSpacing(0.0f); rightScroll->Add(rightColumn); + + if (!errorMessage_.empty()) { + rightColumn->Add(new NoticeView(errorLevel_, errorMessage_, errorDetails_)); + rightColumn->Add(new Spacer(8.0f)); + } + rightColumn->Add(new ItemHeader(cw->T("Cheats"))); + bool prevIsTitle = false; for (size_t i = 0; i < fileInfo_.size(); ++i) { std::string_view text; @@ -231,30 +236,61 @@ static char *GetLineNoNewline(char *temp, int sz, FILE *fp) { return line; } +void CwCheatScreen::ImportAndReport(const Path &cheatFile) { + int cheatCount = 0; + if (!ImportCheats(cheatFile, &cheatCount)) { + // Show an error message? + if (File::Exists(cheatFile)) { + auto er = GetI18NCategory(I18NCat::ERRORS); + errorMessage_ = ApplySafeSubstitutions(er->T("File not found: %1"), ""); + errorLevel_ = NoticeLevel::WARN; + } else { + auto di = GetI18NCategory(I18NCat::DIALOG); + errorMessage_ = di->T("LoadingFailed"); + errorLevel_ = NoticeLevel::ERROR; + } + errorDetails_ = GetFriendlyPath(cheatFile); + } else if (cheatCount == 0) { + auto cw = GetI18NCategory(I18NCat::CWCHEATS); + // Show an error message? + errorLevel_ = NoticeLevel::INFO; + errorMessage_ = cw->T("No cheats found for this game"); + errorDetails_.clear(); + } else { + auto cw = GetI18NCategory(I18NCat::CWCHEATS); + // Show a success message? + errorLevel_ = NoticeLevel::SUCCESS; + errorMessage_ = ApplySafeSubstitutions(cw->T("Added %1 cheats for this game"), cheatCount); + errorDetails_ = GetFriendlyPath(cheatFile); + } + g_Config.bReloadCheats = true; + RecreateViews(); +} + void CwCheatScreen::OnImportBrowse(UI::EventParams ¶ms) { System_BrowseForFile(GetRequesterToken(), "Open cheat DB file", BrowseFileType::DB, [&](const std::string &value, int) { + if (value.empty()) { + return; + } Path path(value); INFO_LOG(Log::System, "Attempting to load cheats from: '%s'", path.ToVisualString().c_str()); - if (ImportCheats(path)) { - g_Config.bReloadCheats = true; - } else { - // Show an error message? - } - RecreateViews(); + int cheatsFound = 0; + ImportAndReport(path); }); } void CwCheatScreen::OnImportCheat(UI::EventParams ¶ms) { - if (!ImportCheats(GetGlobalCheatFilePath())) { - // Show an error message? - errorMessageView_->SetVisibility(UI::V_VISIBLE); - } - - g_Config.bReloadCheats = true; - RecreateViews(); + const Path importPath = GetGlobalCheatFilePath(); + ImportAndReport(importPath); } -bool CwCheatScreen::ImportCheats(const Path & cheatFile) { +bool CwCheatScreen::ImportCheats(const Path &cheatFile, int *cheatsFound) { + FILE *in = File::OpenCFile(cheatFile, "rt"); + if (!in) { + WARN_LOG(Log::Common, "Unable to open %s\n", cheatFile.c_str()); + return false; + } + if (gameID_.length() != 9 || !engine_) { WARN_LOG(Log::Common, "CWCHEAT: Incorrect ID(%s) - can't import cheats.", gameID_.c_str()); return false; @@ -262,12 +298,6 @@ bool CwCheatScreen::ImportCheats(const Path & cheatFile) { std::string gameID = StringFromFormat("_S %s-%s", gameID_.substr(0, 4).c_str(), gameID_.substr(4).c_str()); - FILE *in = File::OpenCFile(cheatFile, "rt"); - if (!in) { - WARN_LOG(Log::Common, "Unable to open %s\n", cheatFile.c_str()); - return false; - } - std::vector title; std::vector newList; @@ -275,6 +305,7 @@ bool CwCheatScreen::ImportCheats(const Path & cheatFile) { bool parseGameEntry = false; bool parseCheatEntry = false; + (*cheatsFound) = 0; while (in && !feof(in)) { char *line = GetLineNoNewline(linebuf, sizeof(linebuf), in); @@ -304,6 +335,7 @@ bool CwCheatScreen::ImportCheats(const Path & cheatFile) { title.push_back(line); } else if (parseCheatEntry && ((line[0] == '_' && (line[1] == 'C' || line[1] == 'L')) || line[0] == '/' || line[0] == '#')) { newList.push_back(line); + (*cheatsFound)++; } } fclose(in); @@ -320,8 +352,9 @@ bool CwCheatScreen::ImportCheats(const Path & cheatFile) { } FILE *append = File::OpenCFile(engine_->CheatFilename(), "at"); - if (!append) + if (!append) { return false; + } if (title2.size() == 0 || title2[0] != '_' || title2[1] != 'S') { for (int i = (int)title.size(); i > 0; i--) { diff --git a/UI/CwCheatScreen.h b/UI/CwCheatScreen.h index b36eef070d95..a5333d6480ab 100644 --- a/UI/CwCheatScreen.h +++ b/UI/CwCheatScreen.h @@ -28,6 +28,7 @@ struct CheatFileInfo; class CWCheatEngine; +class NoticeView; class CwCheatScreen : public UITwoPaneBaseDialogScreen { public: @@ -55,17 +56,21 @@ class CwCheatScreen : public UITwoPaneBaseDialogScreen { private: void OnCheckBox(int index); - bool ImportCheats(const Path &cheatFile); + bool ImportCheats(const Path &cheatFile, int *cheatsFound); + + void ImportAndReport(const Path &cheatFile); enum { INDEX_ALL = -1 }; bool HasCheatWithName(const std::string &name); bool RebuildCheatFile(int index); - UI::TextView *errorMessageView_ = nullptr; - CWCheatEngine *engine_ = nullptr; std::vector fileInfo_; std::string gameID_; int fileCheckCounter_ = 0; uint64_t fileCheckHash_ = 0; + + std::string errorMessage_; + NoticeLevel errorLevel_ = NoticeLevel::ERROR; + std::string errorDetails_; }; diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index 408d60e7245d..cf9eaff5a18c 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -917,6 +917,13 @@ void GameSettingsScreen::CreateControlsSettings(UI::ViewGroup *controlsSettings) disableDiags->SetEnabledPtr(&g_Config.bShowTouchControls); } +#if PPSSPP_PLATFORM(WINDOWS) + controlsSettings->Add(new ItemHeader(co->T("Control input sources"))); + controlsSettings->Add(new CheckBox(&g_Config.bAllowHIDInput, co->T("HID input"))); + controlsSettings->Add(new CheckBox(&g_Config.bAllowXInput, co->T("XInput"))); + controlsSettings->Add(new CheckBox(&g_Config.bAllowDInput, co->T("DirectInput"))); +#endif + if (deviceType != DEVICE_TYPE_VR) { controlsSettings->Add(new ItemHeader(co->T("Keyboard", "Keyboard Control Settings"))); #if defined(USING_WIN_UI) diff --git a/UI/UIAtlas.cpp b/UI/UIAtlas.cpp index 34f4f483b512..65c359a6d67e 100644 --- a/UI/UIAtlas.cpp +++ b/UI/UIAtlas.cpp @@ -151,6 +151,7 @@ static const ImageMeta g_uiImageIDs[] = { {"I_FOLDER_UPLOAD", false}, {"I_FILE", false}, {"I_FILE_COPY", false}, + {"I_FILE_PASTE", false}, {"I_WEB_BROWSER", false}, {"I_WIFI", false}, {"I_LOGO_X", false}, diff --git a/Windows/DinputDevice.cpp b/Windows/DinputDevice.cpp index 4c48dc7c3c10..ea0b2320f019 100644 --- a/Windows/DinputDevice.cpp +++ b/Windows/DinputDevice.cpp @@ -32,6 +32,7 @@ #include "Common/StringUtils.h" #include "Common/System/NativeApp.h" #include "Core/KeyMap.h" +#include "Core/Config.h" #include "Windows/DinputDevice.h" #include "Windows/Hid/HidInputDevice.h" @@ -234,7 +235,7 @@ void DinputDevice::ReleaseAllKeys() { } void SendNativeAxis(InputDeviceID deviceId, int value, int &lastValue, InputAxis axisId) { - if (value != lastValue) { + if (value != lastValue && g_Config.bAllowDInput) { AxisInput axis; axis.deviceId = deviceId; axis.axisId = axisId; @@ -297,6 +298,8 @@ int DinputDevice::UpdateState() { } void DinputDevice::ApplyButtons(DIJOYSTATE2 &state) { + const bool sendInput = g_Config.bAllowDInput; + BYTE *buttons = state.rgbButtons; u32 downMask = 0x80; @@ -306,11 +309,13 @@ void DinputDevice::ApplyButtons(DIJOYSTATE2 &state) { } bool down = (state.rgbButtons[i] & downMask) == downMask; - KeyInput key; - key.deviceId = DEVICE_ID_PAD_0 + pDevNum; - key.flags = down ? KeyInputFlags::DOWN : KeyInputFlags::UP; - key.keyCode = dinput_buttons[i]; - NativeKey(key); + if (sendInput) { + KeyInput key; + key.deviceId = DEVICE_ID_PAD_0 + pDevNum; + key.flags = down ? KeyInputFlags::DOWN : KeyInputFlags::UP; + key.keyCode = dinput_buttons[i]; + NativeKey(key); + } lastButtons_[i] = state.rgbButtons[i]; } @@ -343,10 +348,12 @@ void DinputDevice::ApplyButtons(DIJOYSTATE2 &state) { } } - NativeKey(dpad[0]); - NativeKey(dpad[1]); - NativeKey(dpad[2]); - NativeKey(dpad[3]); + if (sendInput) { + NativeKey(dpad[0]); + NativeKey(dpad[1]); + NativeKey(dpad[2]); + NativeKey(dpad[3]); + } lastPOV_[0] = LOWORD(state.rgdwPOV[0]); } diff --git a/Windows/Hid/HidInputDevice.cpp b/Windows/Hid/HidInputDevice.cpp index fff2f9dbf294..7632acf4f524 100644 --- a/Windows/Hid/HidInputDevice.cpp +++ b/Windows/Hid/HidInputDevice.cpp @@ -20,6 +20,7 @@ #include "Common/System/NativeApp.h" #include "Common/System/OSD.h" #include "Core/KeyMap.h" +#include "Core/Config.h" struct HidStickMapping { HidStickAxis stickAxis; @@ -235,6 +236,8 @@ int HidInputDevice::UpdateState() { } } + const bool sendInput = g_Config.bAllowHIDInput; + if (controller_) { HIDControllerState state{}; bool result = false; @@ -258,14 +261,14 @@ int HidInputDevice::UpdateState() { for (u32 i = 0; i < buttonMappingsSize; i++) { const ButtonInputMapping &mapping = buttonMappings[i]; - if (downMask & mapping.button) { + if ((downMask & mapping.button) && sendInput) { KeyInput key; key.deviceId = deviceID; key.flags = KeyInputFlags::DOWN; key.keyCode = mapping.keyCode; NativeKey(key); } - if (upMask & mapping.button) { + if ((upMask & mapping.button) && sendInput) { KeyInput key; key.deviceId = deviceID; key.flags = KeyInputFlags::UP; @@ -275,7 +278,7 @@ int HidInputDevice::UpdateState() { } for (const auto &mapping : g_psStickMappings) { - if (state.stickAxes[mapping.stickAxis] != prevState_.stickAxes[mapping.stickAxis]) { + if (state.stickAxes[mapping.stickAxis] != prevState_.stickAxes[mapping.stickAxis] && sendInput) { AxisInput axis; axis.deviceId = deviceID; axis.axisId = mapping.inputAxis; @@ -285,7 +288,7 @@ int HidInputDevice::UpdateState() { } for (const auto &mapping : g_psTriggerMappings) { - if (state.triggerAxes[mapping.triggerAxis] != prevState_.triggerAxes[mapping.triggerAxis]) { + if (state.triggerAxes[mapping.triggerAxis] != prevState_.triggerAxes[mapping.triggerAxis] && sendInput) { AxisInput axis; axis.deviceId = deviceID; axis.axisId = mapping.inputAxis; @@ -294,7 +297,7 @@ int HidInputDevice::UpdateState() { } } - if (state.accValid) { + if (state.accValid && sendInput) { NativeAccelerometer(state.accelerometer[0], state.accelerometer[1], state.accelerometer[2]); } diff --git a/Windows/XinputDevice.cpp b/Windows/XinputDevice.cpp index 9960d139f8ef..64a6c5e62d8e 100644 --- a/Windows/XinputDevice.cpp +++ b/Windows/XinputDevice.cpp @@ -232,7 +232,11 @@ void XinputDevice::ReleaseAllKeys(int pad) { } void XinputDevice::UpdatePad(int pad, const XINPUT_STATE &state, XINPUT_VIBRATION &vibration) { - ApplyButtons(pad, state); + const bool sendInput = g_Config.bAllowXInput; + + if (sendInput) { + ApplyButtons(pad, state); + } ApplyVibration(pad, vibration); AxisInput axis[6]; @@ -256,12 +260,13 @@ void XinputDevice::UpdatePad(int pad, const XINPUT_STATE &state, XINPUT_VIBRATIO sendAxis(JOYSTICK_AXIS_LTRIGGER, (float)state.Gamepad.bLeftTrigger / 255.0f, 4); sendAxis(JOYSTICK_AXIS_RTRIGGER, (float)state.Gamepad.bRightTrigger / 255.0f, 5); - if (axisCount) { + if (axisCount && sendInput) { NativeAxis(axis, axisCount); } padData_[pad].prevState = state; padData_[pad].checkDelayUpdates = 0; + padData_[pad].prevButtons = state.Gamepad.wButtons; } void XinputDevice::ApplyButtons(int pad, const XINPUT_STATE &state) { @@ -269,7 +274,6 @@ void XinputDevice::ApplyButtons(int pad, const XINPUT_STATE &state) { const u32 downMask = buttons & (~padData_[pad].prevButtons); const u32 upMask = (~buttons) & padData_[pad].prevButtons; - padData_[pad].prevButtons = buttons; for (int i = 0; i < ARRAY_SIZE(xinput_ctrl_map); i++) { if (downMask & xinput_ctrl_map[i].from) { diff --git a/assets/lang/ar_AE.ini b/assets/lang/ar_AE.ini index c1893310b302..b8f93366bf91 100644 --- a/assets/lang/ar_AE.ini +++ b/assets/lang/ar_AE.ini @@ -127,6 +127,7 @@ Circular deadzone = منطقة الحساسيه الدائرية Circular stick input = ادخال العصا الدائرية Classic = ‎كلاسيكي Confine Mouse = ‎حجز مؤشر الماوس في حدود نافذة البرنامج +Control input sources = تحكم في مصادر الإدخال # AI translated Control mapping = ‎تعديل ازرار التحكم Custom touch button setup = اعدادات مفاتيح مخصصة Customize = تخصيص @@ -202,10 +203,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = تمت إضافة %1 غش لهذه اللعبة # AI translated Cheats = ‎الغش Edit Cheat File = ‎عدل ملف الغش Import Cheats = ‎إستورد من cheat.db Import from %s = ‎إستورد من %s +No new cheats found for this game = لم يتم العثور على خدع جديدة لهذه اللعبة # AI translated Refresh interval = ‎معدل التحديث [DesktopUI] diff --git a/assets/lang/az_AZ.ini b/assets/lang/az_AZ.ini index a80e2a033a0c..22843d314b60 100644 --- a/assets/lang/az_AZ.ini +++ b/assets/lang/az_AZ.ini @@ -119,6 +119,7 @@ Circular deadzone = Dairəvi ölü bölgə Circular stick input = Dairəvi çubuq girişi Classic = Klassik Confine Mouse = Siçanı pəncərə/görüntü içində tut +Control input sources = Daxil etmə mənbələrinə nəzarət # AI translated Control mapping = Yönəltmə xəritələnişi Custom touch button setup = Özəl toxunuşlu düymə quruluşu Customize = Özəlləşdir # Customize Touch Controls = Toxunuşlu yönəltmə düzənini düzəlt... @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = %1 kod oyuna əlavə edildi # AI translated Cheats = Hiylələr Edit Cheat File = Hiylə faylını düzəlt Import Cheats = Cheat.db'dən götür Import from %s = %s yerindən götür +No new cheats found for this game = Bu oyun üçün yeni hilelər tapılmadı # AI translated Refresh interval = Yeniləniş aralığı [DesktopUI] diff --git a/assets/lang/be_BY.ini b/assets/lang/be_BY.ini index a57f8d8574c3..3532c3986ef8 100644 --- a/assets/lang/be_BY.ini +++ b/assets/lang/be_BY.ini @@ -119,6 +119,7 @@ Circular deadzone = Кругавая мёртвая зона Circular stick input = Кругавы ўвод джойсцікам Classic = Класічны Confine Mouse = Trap mouse within window/display area +Control input sources = Кіраванне ўваходнымі крыніцамі # AI translated Control mapping = Control mapping Custom touch button setup = Налада карыстальніцкіх клавіш Customize = Наладзіць @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Дададзена %1 чыт для гэтай гульні # AI translated Cheats = Чыты Edit Cheat File = Рэдагаваць файл чытаў Import Cheats = Імпарт з cheat.db Import from %s = Імпарт з %s +No new cheats found for this game = Новых читов для гэтай гульні не знойдзена # AI translated Refresh interval = Інтэрвал абнаўлення [DesktopUI] diff --git a/assets/lang/bg_BG.ini b/assets/lang/bg_BG.ini index 7fec95a4fe5e..448ea1d6dda4 100644 --- a/assets/lang/bg_BG.ini +++ b/assets/lang/bg_BG.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Класик Confine Mouse = Trap mouse within window/display area +Control input sources = Контрол на входящите източници # AI translated Control mapping = Избиране на контроли Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Добавени са %1 чийтове за тази игра # AI translated Cheats = Чийтове Edit Cheat File = Редактиране на чийтове файл Import Cheats = Внеси от cheat.db Import from %s = Внеси от %s +No new cheats found for this game = Не са намерени нови чийтове за тази игра # AI translated Refresh interval = Интервал на обновяване [DesktopUI] diff --git a/assets/lang/ca_ES.ini b/assets/lang/ca_ES.ini index 02cf74ab390f..67be3ad07115 100644 --- a/assets/lang/ca_ES.ini +++ b/assets/lang/ca_ES.ini @@ -119,6 +119,7 @@ Circular deadzone = Zona inactiva circular Circular stick input = Entrada de stick circular Classic = Clàssic Confine Mouse = Fixar el ratolí a l'àrea de la finestra/pantalla +Control input sources = Controla les fonts d'entrada # AI translated Control mapping = Assignar botons Custom touch button setup = Ajust de tecla personalitzada Customize = Personalitzar @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = S'han afegit %1 trucs per a aquest joc # AI translated Cheats = Trucs Edit Cheat File = Editar el fitxer de trucs Import Cheats = Importar «cheat.db» Import from %s = Importar %s +No new cheats found for this game = No s'han trobat nous trucs per a aquest joc # AI translated Refresh interval = Freqüència de refrescament [DesktopUI] diff --git a/assets/lang/cz_CZ.ini b/assets/lang/cz_CZ.ini index c277d2aee99f..c469c5269111 100644 --- a/assets/lang/cz_CZ.ini +++ b/assets/lang/cz_CZ.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Klasický Confine Mouse = Trap mouse within window/display area +Control input sources = Ovládat vstupní zdroje # AI translated Control mapping = Mapování ovládání Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Přidáno %1 cheatů pro tuto hru # AI translated Cheats = Cheaty Edit Cheat File = Upravit soubor s cheaty Import Cheats = Importovat z cheat.db Import from %s = Importovat z %s +No new cheats found for this game = Nebyly nalezeny žádné nové cheaty pro tuto hru # AI translated Refresh interval = Frekvence obnoveni [DesktopUI] diff --git a/assets/lang/da_DK.ini b/assets/lang/da_DK.ini index 2909a16662ce..836f2eac1116 100644 --- a/assets/lang/da_DK.ini +++ b/assets/lang/da_DK.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Klassisk Confine Mouse = Begræns mus indenfor vindue/skærmområde +Control input sources = Kontroller inputkilder # AI translated Control mapping = Ændre tasteplaceringen Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Tilføjet %1 snyd til dette spil # AI translated Cheats = Snyd Edit Cheat File = Editer snydefil Import Cheats = Import from cheat.db Import from %s = Importer fra %s +No new cheats found for this game = Ingen nye cheats fundet til dette spil # AI translated Refresh interval = Opdateringsinterval [DesktopUI] diff --git a/assets/lang/de_DE.ini b/assets/lang/de_DE.ini index 6d530601da00..15554abd447b 100644 --- a/assets/lang/de_DE.ini +++ b/assets/lang/de_DE.ini @@ -119,6 +119,7 @@ Circular deadzone = Kreisförmige Totzone Circular stick input = Kreisförmige Stick-Eingabe Classic = Klassisch Confine Mouse = Maus im Fenster-/Anzeigebereich einfangen +Control input sources = Eingabequellen steuern # AI translated Control mapping = Tastenbelegung ändern Custom touch button setup = Benutzerdefinierte Tasteneinstellung Customize = Anpassen @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Es wurden %1 Cheats für dieses Spiel hinzugefügt # AI translated Cheats = Cheats Edit Cheat File = Cheat-Datei ändern Import Cheats = Cheats importieren (aus cheat.db) Import from %s = Importieren von %s +No new cheats found for this game = Keine neuen Cheats für dieses Spiel gefunden # AI translated Refresh interval = Aktualisierungsintervall [DesktopUI] diff --git a/assets/lang/dr_ID.ini b/assets/lang/dr_ID.ini index 0de49afc8472..373c2bb6e2be 100644 --- a/assets/lang/dr_ID.ini +++ b/assets/lang/dr_ID.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Classic Confine Mouse = Trap mouse within window/display area +Control input sources = Mengontrol sumber input # AI translated Control mapping = Atoro'i tombolna Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Ditambahkan %1 cheat untuk game ini # AI translated Cheats = Cheat Edit Cheat File = Edit cheat file Import Cheats = Patamanni cheat.db Import from %s = Patamanni %s +No new cheats found for this game = Tidak ada cheat baru ditemukan untuk permainan ini # AI translated Refresh interval = Refresh interval [DesktopUI] diff --git a/assets/lang/en_US.ini b/assets/lang/en_US.ini index d3e523805daa..472d4491c351 100644 --- a/assets/lang/en_US.ini +++ b/assets/lang/en_US.ini @@ -143,6 +143,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Classic Confine Mouse = Trap mouse within window/display area +Control input sources = Control input sources Control mapping = Control mapping Custom touch button setup = Custom touch button setup Customize = Customize @@ -218,10 +219,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Added %1 cheats for this game Cheats = Cheats Edit Cheat File = Edit cheat file Import Cheats = Import from cheat.db Import from %s = Import from %s +No new cheats found for this game = No new cheats found for this game Refresh interval = Refresh interval [DesktopUI] diff --git a/assets/lang/es_ES.ini b/assets/lang/es_ES.ini index d39d37f1b147..a21b6cab8745 100644 --- a/assets/lang/es_ES.ini +++ b/assets/lang/es_ES.ini @@ -119,6 +119,7 @@ Circular deadzone = Zona muerta circular Circular stick input = Entrada de stick circular Classic = Clásico Confine Mouse = Parar ratón dentro del área de la ventana/pantalla +Control input sources = Controlar fuentes de entrada # AI translated Control mapping = Asignar botones Custom touch button setup = Configurar tecla personalizada Customize = Personalizar @@ -195,10 +196,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Añadidos %1 trucos para este juego # AI translated Cheats = Trucos Edit Cheat File = Editar archivo de trucos Import Cheats = Importar archivo cheat.db Import from %s = Importar desde %s +No new cheats found for this game = No se han encontrado nuevos trucos para este juego # AI translated Refresh interval = Frecuencia de actualización [DesktopUI] diff --git a/assets/lang/es_LA.ini b/assets/lang/es_LA.ini index fabd4c9f30b4..c1f2ca1e8bf9 100644 --- a/assets/lang/es_LA.ini +++ b/assets/lang/es_LA.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone o Zona Inactiva circular Circular stick input = Entrada del stick circular Classic = Clásico Confine Mouse = Fijar el ratón al área de la ventana/pantalla +Control input sources = Controlar fuentes de entrada # AI translated Control mapping = Asignar botones / Mapeo de botones Custom touch button setup = Configurar teclas personalizadas Customize = Personalizar @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Se añadieron %1 trucos para este juego # AI translated Cheats = Trucos Edit Cheat File = Editar archivo de trucos Import Cheats = Importar archivo cheat.db Import from %s = Importar desde %s +No new cheats found for this game = No se encontraron nuevos trucos para este juego # AI translated Refresh interval = Frecuencia de actualización [DesktopUI] diff --git a/assets/lang/fa_IR.ini b/assets/lang/fa_IR.ini index ecee13ceb805..0bfb6017e36d 100644 --- a/assets/lang/fa_IR.ini +++ b/assets/lang/fa_IR.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = کلاسیک Confine Mouse = ‎محدود کردن موس به ناحیه درون پنجره +Control input sources = کنترل منابع ورودی # AI translated Control mapping = ‎تنظیمات کنترلر Custom touch button setup = شخصی سازی تنظیمات کلید Customize = شخصی‌سازی @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = به این بازی %1 تقلب اضافه شد # AI translated Cheats = ‎کد‌های تقلب Edit Cheat File = ‎ویرایش فایل کد‌ها Import Cheats = ‎cheat.db وارد کردن از Import from %s = وارد کردن از %s +No new cheats found for this game = هیچ تقلب جدیدی برای این بازی یافت نشد # AI translated Refresh interval = دورهٔ تازه‌سازی [DesktopUI] diff --git a/assets/lang/fi_FI.ini b/assets/lang/fi_FI.ini index 5f0ff2ad0085..c49cb69b2fc1 100644 --- a/assets/lang/fi_FI.ini +++ b/assets/lang/fi_FI.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Klassinen Confine Mouse = Kaappaa hiiri ikkunan/näytön sisälle +Control input sources = Ohjaa syöttölähteitä # AI translated Control mapping = Ohjauksen kartoitus Custom touch button setup = Custom touch button setup Customize = Mukauta @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Lisätty %1 koodia tälle pelille # AI translated Cheats = Huijaukset Edit Cheat File = Muokkaa huijaustiedostoa Import Cheats = Tuo huijauksia Import from %s = %s +No new cheats found for this game = Tätä peliä varten ei löytynyt uusia huijauksia # AI translated Refresh interval = Ruudunpäivitysnopeus [DesktopUI] diff --git a/assets/lang/fr_FR.ini b/assets/lang/fr_FR.ini index f6e85b343987..947321b28e7a 100644 --- a/assets/lang/fr_FR.ini +++ b/assets/lang/fr_FR.ini @@ -143,6 +143,7 @@ Circular deadzone = Zone morte circulaire Circular stick input = Entrée du stick circulaire Classic = Classique Confine Mouse = Capturer la souris dans la fenêtre/zone d'affichage +Control input sources = Contrôler les sources d'entrée # AI translated Control mapping = Réassignation des touches Custom touch button setup = Configuration personnalisée des boutons tactiles Customize = Personnaliser @@ -218,10 +219,12 @@ X = Axe X Y = Axe Y [CwCheats] +Added %1 cheats for this game = Ajout de %1 astuces pour ce jeu # AI translated Cheats = Codes de triche Edit Cheat File = Modifier le fichier de triche Import Cheats = Importer des codes de triche Import from %s = Importer de %s +No new cheats found for this game = Aucun nouveau cheat trouvé pour ce jeu # AI translated Refresh interval = Taux de rafraîchissement [DesktopUI] diff --git a/assets/lang/gl_ES.ini b/assets/lang/gl_ES.ini index fe29f4ef8f93..36f41e9722eb 100644 --- a/assets/lang/gl_ES.ini +++ b/assets/lang/gl_ES.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Clásico Confine Mouse = Trap mouse within window/display area +Control input sources = Controla as fontes de entrada # AI translated Control mapping = Asignar botóns Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Engadidos %1 trucos para este xogo # AI translated Cheats = Trucos Edit Cheat File = Editar arquivo de trucos Import Cheats = Importar cheat.db Import from %s = Importar %s +No new cheats found for this game = Non se atoparon novos trucos para este xogo # AI translated Refresh interval = Frecuencia de actualización [DesktopUI] diff --git a/assets/lang/gr_EL.ini b/assets/lang/gr_EL.ini index 5860b5e279d8..7baa2d7d776b 100644 --- a/assets/lang/gr_EL.ini +++ b/assets/lang/gr_EL.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Κλασικό Confine Mouse = Εγκλωβισμός ποντικιού μέσα στην περιοχή παραθύρου/οθόνης +Control input sources = Έλεγχος πηγών εισόδου # AI translated Control mapping = Χαρτογράφηση κουμπιών Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Προστέθηκαν %1 cheats για αυτό το παιχνίδι # AI translated Cheats = Κωδικοί Edit Cheat File = Επεξεργασία αρχείου κωδικών Import Cheats = Εισαγωγή από cheat.db Import from %s = Εισαγωγή από %s +No new cheats found for this game = Δεν βρέθηκαν νέοι κωδικοί για αυτό το παιχνίδι # AI translated Refresh interval = Ρυθμός ανανέωσης [DesktopUI] diff --git a/assets/lang/he_IL.ini b/assets/lang/he_IL.ini index e8375ec9cefa..5f880ebbe535 100644 --- a/assets/lang/he_IL.ini +++ b/assets/lang/he_IL.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Classic Confine Mouse = Trap mouse within window/display area +Control input sources = שלוט במקורות קלט # AI translated Control mapping = מיפוי מקשים Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = הוספו %1 קודי רמאות למשחק הזה # AI translated Cheats = Cheats Edit Cheat File = Edit cheat file Import Cheats = Import from cheat.db Import from %s = Import from %s +No new cheats found for this game = לא נמצאו קודים חדשים למשחק זה # AI translated Refresh interval = Refresh interval [DesktopUI] diff --git a/assets/lang/he_IL_invert.ini b/assets/lang/he_IL_invert.ini index a8c736cd72a0..01d3e2c5d407 100644 --- a/assets/lang/he_IL_invert.ini +++ b/assets/lang/he_IL_invert.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Classic Confine Mouse = Trap mouse within window/display area +Control input sources = שלוט במקורות קלט # AI translated Control mapping = םישקמ יופימ Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = המשחק הזה קיבל %1 קודי רמאות # AI translated Cheats = Cheats Edit Cheat File = Edit cheat file Import Cheats = Import from cheat.db Import from %s = Import from %s +No new cheats found for this game = המשחק הזה הוא ללא קודים חדשים # AI translated Refresh interval = Refresh interval [DesktopUI] diff --git a/assets/lang/hr_HR.ini b/assets/lang/hr_HR.ini index ccaed8ed740a..57bae8e9ed06 100644 --- a/assets/lang/hr_HR.ini +++ b/assets/lang/hr_HR.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Klasično Confine Mouse = Zaključaj miš u window/display području +Control input sources = Kontrolirajte izvore unosa # AI translated Control mapping = Namještanje kontrola Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Dodano %1 varanja za ovu igru # AI translated Cheats = Šifre Edit Cheat File = Izmijeni cheat datoteku Import Cheats = Uvezi iz cheat.db Import from %s = Uvezi iz %s +No new cheats found for this game = Nisu pronađeni novi trikovi za ovu igru # AI translated Refresh interval = Brzina osvježavanja [DesktopUI] diff --git a/assets/lang/hu_HU.ini b/assets/lang/hu_HU.ini index 60f7015b1ec5..4de60835a840 100644 --- a/assets/lang/hu_HU.ini +++ b/assets/lang/hu_HU.ini @@ -119,6 +119,7 @@ Circular deadzone = Kör alakú holtzóna Circular stick input = Kör alakú bemenet Classic = Klasszikus Confine Mouse = Egérkurzor rögzítése az ablakhoz +Control input sources = Bemeneti források vezérlése # AI translated Control mapping = Gombok beállítása Custom touch button setup = Saját gomb beállítása Customize = Testreszab @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = %1 csalást adtunk hozzá ehhez a játékhoz # AI translated Cheats = Csalások Edit Cheat File = Csalás fájl szerkesztése Import Cheats = Importálás cheat.db-ből Import from %s = Importálás innen: %s +No new cheats found for this game = Nincs új csalás található ehhez a játékhoz # AI translated Refresh interval = Frissítési gyakoriság [DesktopUI] diff --git a/assets/lang/id_ID.ini b/assets/lang/id_ID.ini index 6cdc4f366ac1..60e8ee5d7fbe 100644 --- a/assets/lang/id_ID.ini +++ b/assets/lang/id_ID.ini @@ -119,6 +119,7 @@ Circular deadzone = Zona mati melingkar Circular stick input = Masukan stik melingkar Classic = Klasik Confine Mouse = Kunci mouse di area layar +Control input sources = Kontrol sumber input # AI translated Control mapping = Pemetaan kontrol Custom touch button setup = Pengaturan kunci kustom Customize = Kustomisasi @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Ditambahkan %1 cheat untuk permainan ini # AI translated Cheats = Cheat Edit Cheat File = Edit berkas cheat Import Cheats = Impor dari cheat.db Import from %s = Impor dari %s +No new cheats found for this game = Tidak ada cheat baru yang ditemukan untuk game ini # AI translated Refresh interval = Interval penyegaran [DesktopUI] diff --git a/assets/lang/it_IT.ini b/assets/lang/it_IT.ini index f81f12cea371..0729d244009b 100644 --- a/assets/lang/it_IT.ini +++ b/assets/lang/it_IT.ini @@ -119,6 +119,7 @@ Circular deadzone = Raggio circolare di base Circular stick input = Input circolare levetta Classic = Classico Confine Mouse = Confina il mouse all'interno dell'area della finestra +Control input sources = Controlla le sorgenti di input # AI translated Control mapping = Mappatura dei Controlli Custom touch button setup = Impostazioni tasto personalizz. Customize = Personalizza @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Aggiunti %1 trucchi per questo gioco # AI translated Cheats = Trucchi Edit Cheat File = Modifica file Trucchi Import Cheats = Importa da cheat.db Import from %s = Importa da %s +No new cheats found for this game = Non sono stati trovati nuovi trucchi per questo gioco # AI translated Refresh interval = Frequenza di Aggiornamento [DesktopUI] diff --git a/assets/lang/ja_JP.ini b/assets/lang/ja_JP.ini index ce8247c9c60f..e0d995efa727 100644 --- a/assets/lang/ja_JP.ini +++ b/assets/lang/ja_JP.ini @@ -119,6 +119,7 @@ Circular deadzone = 環状デッドゾーン Circular stick input = 環状スティック入力 Classic = クラシック Confine Mouse = ウィンドウ/表示領域内でマウスをトラップする +Control input sources = 入力ソースを制御 # AI translated Control mapping = キーマッピング(入力ボタン設定) Custom touch button setup = カスタムキーの設定 Customize = カスタマイズ @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = このゲームに%1 チートが追加されました # AI translated Cheats = チート Edit Cheat File = チートファイルを編集する Import Cheats = cheat.dbからインポートする Import from %s = %sからインポートする +No new cheats found for this game = このゲームの新しいチートは見つかりませんでした # AI translated Refresh interval = リフレッシュレート [DesktopUI] diff --git a/assets/lang/jv_ID.ini b/assets/lang/jv_ID.ini index 9ae77b2f0efc..d1022cf1daa2 100644 --- a/assets/lang/jv_ID.ini +++ b/assets/lang/jv_ID.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Klasik Confine Mouse = Trap mouse within window/display area +Control input sources = Ngontrol sumber input # AI translated Control mapping = Pemetaan Kontrol Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Dianyari %1 curang kanggo game iki # AI translated Cheats = Mbeling Edit Cheat File = Sunting berkas mbeling Import Cheats = Import from cheat.db Import from %s = Njokot soko %s +No new cheats found for this game = Ora ana cheat anyar sing ditemokake kanggo game iki # AI translated Refresh interval = Restar rate [DesktopUI] diff --git a/assets/lang/ko_KR.ini b/assets/lang/ko_KR.ini index 5735647351f6..d852df9ce36d 100644 --- a/assets/lang/ko_KR.ini +++ b/assets/lang/ko_KR.ini @@ -119,6 +119,7 @@ Circular deadzone = 원형 하단 반경 Circular stick input = 원형 스틱 입력 Classic = 클래식 Confine Mouse = 창/표시 영역 내에서 마우스 트랩 +Control input sources = 입력 소스 제어 # AI translated Control mapping = 제어 맵핑 Custom touch button setup = 커스텀 키 설정 Customize = 맞춤설정 @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = 이 게임에 %1 치트가 추가되었습니다 # AI translated Cheats = 치트 Edit Cheat File = 치트 파일 수정 Import Cheats = cheat.db에서 가져오기 Import from %s = %s에서 가져오기 +No new cheats found for this game = 이 게임에 대한 새로운 치트를 찾을 수 없습니다 # AI translated Refresh interval = 주사율 [DesktopUI] diff --git a/assets/lang/ku_SO.ini b/assets/lang/ku_SO.ini index 4453e81fdcd5..74e3e557b97f 100644 --- a/assets/lang/ku_SO.ini +++ b/assets/lang/ku_SO.ini @@ -132,6 +132,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = کلاسیک Confine Mouse = Trap mouse within window/display area +Control input sources = Kontrolka çavkanên têkevin # AI translated Control mapping = Control mapping Custom touch button setup = Custom touch button setup Customize = Customize @@ -207,10 +208,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Lihevhatin %1 tîkîne ji bo vê lîstikê # AI translated Cheats = Cheats Edit Cheat File = Edit cheat file Import Cheats = Import from cheat.db Import from %s = Import from %s +No new cheats found for this game = Çalakî nû nehat dîtin ji bo vê lîstikê # AI translated Refresh interval = Refresh interval [DesktopUI] diff --git a/assets/lang/lo_LA.ini b/assets/lang/lo_LA.ini index 5c50a4e0f564..7f731bc19dfd 100644 --- a/assets/lang/lo_LA.ini +++ b/assets/lang/lo_LA.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = ແບບດັ້ງເດີມ Confine Mouse = ຈຳກັດເມົ້າໃນໜ້າຕ່າງ/ພື້ນທີ່ສະແດງຜົນ +Control input sources = ຄວບຄຸມແหลວນສູງໃສ່ # AI translated Control mapping = ປ່ຽນແປງຄ່າຄວບຄຸມ Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = ເພີ່ມເຂົ້າແບບ %1 ສໍາລັບເກมນີ້ # AI translated Cheats = ການໃຊ້ສູດໂກງ Edit Cheat File = ປັບແຕ່ງໄຟລ໌ສູດໂກງ Import Cheats = Import from cheat.db Import from %s = ນຳເຂົ້າຈາກໄຟລ໌ສູດໂກງ %s +No new cheats found for this game = ບໍ່ມີຄວາມສາມາດໃໝ່ສໍາລັບເກມນີ້ # AI translated Refresh interval = ອັດຕາການຟື້ນຟູ [DesktopUI] diff --git a/assets/lang/lt-LT.ini b/assets/lang/lt-LT.ini index f79ff62c52d7..d30ea2c066c6 100644 --- a/assets/lang/lt-LT.ini +++ b/assets/lang/lt-LT.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Klasikinis Confine Mouse = Trap mouse within window/display area +Control input sources = Valdyti įvesties šaltinius # AI translated Control mapping = Valdymo mygtukų nustatymai Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Pridėta %1 sukčiavimų šiai žaidimui # AI translated Cheats = Kodai Edit Cheat File = Redaguoti kodų failą Import Cheats = Importuoti iš cheat.db Import from %s = Importuoti iš %s +No new cheats found for this game = Šiai žaidimui naujų apgavysčių nerasta # AI translated Refresh interval = Atsinaujinimo dažnis [DesktopUI] diff --git a/assets/lang/ms_MY.ini b/assets/lang/ms_MY.ini index 5289390e3f94..c1ff94502ce1 100644 --- a/assets/lang/ms_MY.ini +++ b/assets/lang/ms_MY.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Klasik Confine Mouse = Trap mouse within window/display area +Control input sources = Kawal sumber input # AI translated Control mapping = Pemetaan kawalan Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Ditambahkan %1 helah untuk permainan ini # AI translated Cheats = Cheat Edit Cheat File = Ubah cheat file Import Cheats = Import dari cheat.db Import from %s = Import dari %s +No new cheats found for this game = Tiada cheat baru ditemui untuk permainan ini # AI translated Refresh interval = Refresh interval [DesktopUI] diff --git a/assets/lang/nl_NL.ini b/assets/lang/nl_NL.ini index afff1f2e26f7..b83cab88bc9d 100644 --- a/assets/lang/nl_NL.ini +++ b/assets/lang/nl_NL.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Klassiek Confine Mouse = Muis binnen venster/weergavegebied vastzetten +Control input sources = Beheer invoerbronnen # AI translated Control mapping = Besturing toewijzen Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Toegevoegd %1 cheats voor dit spel # AI translated Cheats = Cheats Edit Cheat File = Cheatbestand bewerken Import Cheats = Importeren van cheat.db Import from %s = Importeren van %s +No new cheats found for this game = Geen nieuwe cheats gevonden voor dit spel # AI translated Refresh interval = Vernieuwingsfrequentie [DesktopUI] diff --git a/assets/lang/no_NO.ini b/assets/lang/no_NO.ini index 431c5658b294..ba97280879f8 100644 --- a/assets/lang/no_NO.ini +++ b/assets/lang/no_NO.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Classic Confine Mouse = Trap mouse within window/display area +Control input sources = Kontroller inngangskilder # AI translated Control mapping = Control mapping Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Lagt til %1 jukse for dette spillet # AI translated Cheats = Cheats Edit Cheat File = Edit cheat file Import Cheats = Import from cheat.db Import from %s = Import from %s +No new cheats found for this game = Ingen nye jukser funnet for dette spillet # AI translated Refresh interval = Refresh interval [DesktopUI] diff --git a/assets/lang/pl_PL.ini b/assets/lang/pl_PL.ini index 267af1ab48bf..0c4b8e5f9fc1 100644 --- a/assets/lang/pl_PL.ini +++ b/assets/lang/pl_PL.ini @@ -119,6 +119,7 @@ Circular deadzone = Okrągły promień dolny Circular stick input = Okrągły odczyt analoga Classic = Klasyczny Confine Mouse = Zablokuj myszkę w oknie +Control input sources = Kontroluj źródła wejściowe # AI translated Control mapping = Mapowanie przycisków Custom touch button setup = Niestandardowe Ustawienia Klawiszy Customize = Ustawienia Niestandardowe @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Dodano %1 cheatów do tej gry # AI translated Cheats = Kody Edit Cheat File = Edytuj plik kodów Import Cheats = Importuj z pliku cheat.db Import from %s = Importuj z pliku %s +No new cheats found for this game = Nie znaleziono nowych cheatów dla tej gry # AI translated Refresh interval = Szybkość odświeżania [DesktopUI] diff --git a/assets/lang/pt_BR.ini b/assets/lang/pt_BR.ini index 2647b9b82024..13961191bc81 100644 --- a/assets/lang/pt_BR.ini +++ b/assets/lang/pt_BR.ini @@ -143,6 +143,7 @@ Circular deadzone = Zona morta circular Circular stick input = Entrada circular do direcional Classic = Clássico Confine Mouse = Travar o mouse dentro da janela/tela +Control input sources = Controlar fontes de entrada # AI translated Control mapping = Mapeamento dos controles Custom touch button setup = Configuração personalizada do toque dos botões Customize = Personalizar @@ -218,10 +219,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Adicionados %1 cheats para este jogo # AI translated Cheats = Trapaças Edit Cheat File = Editar arquivo de trapaças Import Cheats = Importar do cheat.db Import from %s = Importar do %s +No new cheats found for this game = Nenhum novo cheat encontrado para este jogo # AI translated Refresh interval = Intervalo da atualização [DesktopUI] diff --git a/assets/lang/pt_PT.ini b/assets/lang/pt_PT.ini index 038b289f628e..0a5ff3d7e456 100644 --- a/assets/lang/pt_PT.ini +++ b/assets/lang/pt_PT.ini @@ -143,6 +143,7 @@ Circular deadzone = Zona morta circular Circular stick input = Input circular do direcional Classic = Clássico Confine Mouse = Isolar o rato dentro da janela / área de exibição +Control input sources = Controlar fontes de entrada # AI translated Control mapping = Mapeamento de controlos Custom touch button setup = Definição personalizada de teclas Customize = Personalizar @@ -218,10 +219,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Adicionados %1 cheats para este jogo # AI translated Cheats = Cheats Edit Cheat File = Editar ficheiro de Cheats Import Cheats = Importar de cheat.db Import from %s = Importar de %s +No new cheats found for this game = Não foram encontrados novos cheats para este jogo # AI translated Refresh interval = Taxa de atualização [DesktopUI] diff --git a/assets/lang/ro_RO.ini b/assets/lang/ro_RO.ini index 40e87df1412a..77437771ca74 100644 --- a/assets/lang/ro_RO.ini +++ b/assets/lang/ro_RO.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Clasic Confine Mouse = Trap mouse within window/display area +Control input sources = Controlează sursele de input # AI translated Control mapping = Editare controale Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,11 +195,13 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Adăugate %1 cheats pentru acest joc # AI translated Cheats = Trișare Edit Cheat File = Editare fișier trișare Import Cheats = Importă din cheat.db #Import %s = Importă din %s Import from %s = Import from %s +No new cheats found for this game = Nu au fost găsite cheat-uri noi pentru acest joc # AI translated Refresh interval = Rată de împrospatare [DesktopUI] diff --git a/assets/lang/ru_RU.ini b/assets/lang/ru_RU.ini index c34ae0861313..48612640147d 100644 --- a/assets/lang/ru_RU.ini +++ b/assets/lang/ru_RU.ini @@ -119,6 +119,7 @@ Circular deadzone = Круговая мёртвая зона Circular stick input = Круговой ввод стика Classic = Классический Confine Mouse = Не давать мыши выходить за пределы окна +Control input sources = Управление источниками ввода # AI translated Control mapping = Назначение кнопок Custom touch button setup = Настройка кастомных кнопок Customize = Настроить @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Добавлено %1 читов для этой игры # AI translated Cheats = Читы Edit Cheat File = Изменить файл чита Import Cheats = Импортировать из cheat.db Import from %s = Импортировать из %s +No new cheats found for this game = Не найдено новых читов для этой игры # AI translated Refresh interval = Интервал обновления [DesktopUI] diff --git a/assets/lang/sv_SE.ini b/assets/lang/sv_SE.ini index d84c792653d8..52d74d27454b 100644 --- a/assets/lang/sv_SE.ini +++ b/assets/lang/sv_SE.ini @@ -119,6 +119,7 @@ Circular deadzone = Cirkulär dödzon Circular stick input = Cirkulär analog inmatning Classic = Klassisk Confine Mouse = Stäng in muspekaren i fönstret +Control input sources = Kontrollera ingångskällor # AI translated Control mapping = Kontrollmappning Custom touch button setup = Anpassa touch-knappar Customize = Anpassa @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Lade till %1 fusk för det här spelet # AI translated Cheats = Fusk Edit Cheat File = Redigera fuskfil Import Cheats = Importera från cheat.db Import from %s = Importera från %s +No new cheats found for this game = Inga nya fusk hittades för det här spelet # AI translated Refresh interval = Uppdateringsintervall [DesktopUI] diff --git a/assets/lang/tg_PH.ini b/assets/lang/tg_PH.ini index 2760bf1dbcb3..6b0fa046ed26 100644 --- a/assets/lang/tg_PH.ini +++ b/assets/lang/tg_PH.ini @@ -119,6 +119,7 @@ Circular deadzone = Pabilog na deadzone Circular stick input = Input ng pabilog na stick Classic = Klasiko Confine Mouse = I-trap ang mouse sa loob ng window/display area +Control input sources = Назорати манбаъҳои воридот # AI translated Control mapping = Pagtakda ng Kontrol Custom touch button setup = Magtakda ng pasadyang pag-aayos sa pindutan Customize = I-customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Эҳтимолҳои %1 барои ин бозӣ илова карда шуданд # AI translated Cheats = Mga Daya Edit Cheat File = I-edit ang Cheat File Import Cheats = I-import ang mga daya mula sa cheat.db Import from %s = I-Import ang mga daya mula sa %s +No new cheats found for this game = Барои ин бозӣ хардӣ нави пайдо нашуд # AI translated Refresh interval = Pagitan ng pag-refresh [DesktopUI] diff --git a/assets/lang/th_TH.ini b/assets/lang/th_TH.ini index 0cf4aaf4f142..a51241d4db2e 100644 --- a/assets/lang/th_TH.ini +++ b/assets/lang/th_TH.ini @@ -119,6 +119,7 @@ Circular deadzone = รัศมีต่ำสุดของการหมุ Circular stick input = ค่านำเข้าการหมุนปุ่ม Classic = แบบดั้งเดิม Confine Mouse = จำกัดเม้าส์ภายในหน้าต่าง/พื้นที่แสดงผล +Control input sources = ควบคุมแหล่งข้อมูลเข้า # AI translated Control mapping = เปลี่ยนแปลงค่าการควบคุม Custom touch button setup = ติดตั้งปุ่มคอมโบปรับแต่ง Customize = ปรับแต่ง @@ -194,10 +195,12 @@ X = แกน X Y = แกน Y [CwCheats] +Added %1 cheats for this game = เพิ่ม %1 โกงสำหรับเกมนี้ # AI translated Cheats = การใช้สูตรโกง Edit Cheat File = ปรับแต่งไฟล์สูตรโกง Import Cheats = นำเข้าจากไฟล์สูตรโกง Import from %s = นำเข้าจาก %s +No new cheats found for this game = ไม่พบโกงใหม่สำหรับเกมนี้ # AI translated Refresh interval = ช่วงเวลารีเฟรชสูตร [DesktopUI] diff --git a/assets/lang/tr_TR.ini b/assets/lang/tr_TR.ini index c692a38e93be..efcf73f107b2 100644 --- a/assets/lang/tr_TR.ini +++ b/assets/lang/tr_TR.ini @@ -119,6 +119,7 @@ Circular deadzone = Dairesel ölü bölge Circular stick input = Dairesel çubuk girişi Classic = Klasik Confine Mouse = Fareyi Sınırlandır +Control input sources = Kontrol giriş kaynakları # AI translated Control mapping = Kontrolleri Ayarla Custom touch button setup = Özel Tuş Ayarı Customize = Özelleştir @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Bu oyun için %1 hile eklendi # AI translated Cheats = Hileler Edit Cheat File = Hile Dosyası Düzenle Import Cheats = Hileleri İçe Aktar Import from %s = Şuradan Aktar %s +No new cheats found for this game = Bu oyun için yeni hile bulunamadı # AI translated Refresh interval = Yenileme Aralığı [DesktopUI] diff --git a/assets/lang/uk_UA.ini b/assets/lang/uk_UA.ini index 08387cf6d2dd..8a665b741151 100644 --- a/assets/lang/uk_UA.ini +++ b/assets/lang/uk_UA.ini @@ -119,6 +119,7 @@ Circular deadzone = Кругова мертва зона Circular stick input = Введення круглого стіка Classic = Класичний Confine Mouse = Не давати миші виходити за межі екрану +Control input sources = Керування джерелами введення # AI translated Control mapping = Призначення кнопок Custom touch button setup = Індивідуальне налаштування клавіші Customize = Кастомізувати @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Додано %1 читів для цієї гри # AI translated Cheats = Чіт-коди Edit Cheat File = Змінити файл чіт-коду Import Cheats = Імпортувати з cheat.db Import from %s = Імпортувати з %s +No new cheats found for this game = Нових чітів для цієї гри не знайдено # AI translated Refresh interval = Частота оновлення [DesktopUI] diff --git a/assets/lang/vi_VN.ini b/assets/lang/vi_VN.ini index a961b6137f37..20cf95e54e7f 100644 --- a/assets/lang/vi_VN.ini +++ b/assets/lang/vi_VN.ini @@ -119,6 +119,7 @@ Circular deadzone = Circular deadzone Circular stick input = Circular stick input Classic = Cổ điển Confine Mouse = hiển thị chuột +Control input sources = Kiểm soát nguồn nhập # AI translated Control mapping = Chỉnh nút Custom touch button setup = Custom touch button setup Customize = Customize @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = Đã thêm %1 mã gian lận cho trò chơi này # AI translated Cheats = Cheats Edit Cheat File = Sửa mục cheat Import Cheats = Nhập mã từ cheat.db Import from %s = Nhập mã từ %s +No new cheats found for this game = Không tìm thấy mã gian lận mới cho trò chơi này # AI translated Refresh interval = Tần số làm mới [DesktopUI] diff --git a/assets/lang/zh_CN.ini b/assets/lang/zh_CN.ini index f55c0cfec4c5..d16f0cd9538e 100644 --- a/assets/lang/zh_CN.ini +++ b/assets/lang/zh_CN.ini @@ -119,6 +119,7 @@ Circular deadzone = 环形死区 Circular stick input = 环形摇杆输入 Classic = 经典款式 Confine Mouse = 限制鼠标在窗口内 +Control input sources = 控制输入源 # AI translated Control mapping = 按键映射 Custom touch button setup = 自定义键位设置 Customize = 自定义… @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = 为此游戏添加了 %1 作弊码 # AI translated Cheats = 金手指 Edit Cheat File = 编辑金手指文件 Import Cheats = 从cheat.db导入 Import from %s = 从%s导入 +No new cheats found for this game = 未找到此游戏的新作弊 # AI translated Refresh interval = 刷新间隔 [DesktopUI] diff --git a/assets/lang/zh_TW.ini b/assets/lang/zh_TW.ini index bbe0a92b8b33..c5bf392b77a6 100644 --- a/assets/lang/zh_TW.ini +++ b/assets/lang/zh_TW.ini @@ -119,6 +119,7 @@ Circular deadzone = 圓形死區 Circular stick input = 圓形搖桿輸入 Classic = 傳統 Confine Mouse = 在視窗/顯示區域內截獲滑鼠 +Control input sources = 控制輸入來源 # AI translated Control mapping = 控制對應 Custom touch button setup = 自訂按鍵設定 Customize = 自訂 @@ -194,10 +195,12 @@ X = X Y = Y [CwCheats] +Added %1 cheats for this game = 為此遊戲添加了 %1 作弊碼 # AI translated Cheats = 密技 Edit Cheat File = 編輯密技檔案 Import Cheats = 從 cheat.db 匯入 Import from %s = 從 %s 匯入 +No new cheats found for this game = 未找到此遊戲的新作弊 # AI translated Refresh interval = 重新整理間隔 [DesktopUI] diff --git a/assets/ui_images/images.svg b/assets/ui_images/images.svg index f54b38da2c8e..56747c9229d2 100644 --- a/assets/ui_images/images.svg +++ b/assets/ui_images/images.svg @@ -23,9 +23,9 @@ inkscape:pagecheckerboard="true" inkscape:deskcolor="#d1d1d1" inkscape:document-units="px" - inkscape:zoom="2" - inkscape:cx="245.5" - inkscape:cy="307.75" + inkscape:zoom="5.6568542" + inkscape:cx="272.05933" + inkscape:cy="562.76861" inkscape:window-width="3840" inkscape:window-height="2071" inkscape:window-x="-9" @@ -1022,10 +1022,10 @@ sodipodi:nodetypes="ccccccccccccccccccccccccccccc" /> @@ -1568,7 +1568,16 @@ id="path97" />