diff --git a/dlls/joy.cpl/joy.h b/dlls/joy.cpl/joy.h index 07c13fa016f..13efe1be6a1 100644 --- a/dlls/joy.cpl/joy.h +++ b/dlls/joy.cpl/joy.h @@ -29,11 +29,22 @@ extern HMODULE hcpl; +struct Effect { + IDirectInputEffect *effect; + DIEFFECT params; + DIEFFECTINFOW info; +}; + struct Joystick { IDirectInputDevice8W *device; DIDEVICEINSTANCEW instance; int num_buttons; int num_axes; + BOOL forcefeedback; + int num_effects; + int cur_effect; + int chosen_effect; + struct Effect *effects; }; #define TEST_MAX_BUTTONS 32 @@ -43,6 +54,7 @@ struct JoystickData { IDirectInput8W *di; struct Joystick *joysticks; int num_joysticks; + int num_ff; int cur_joystick; int chosen_joystick; HWND buttons[TEST_MAX_BUTTONS]; @@ -76,6 +88,9 @@ struct JoystickData { #define IDC_JOYSTICKBUTTON 3000 #define IDC_JOYSTICKAXES 4000 +#define IDC_FFSELECTCOMBO 2009 +#define IDC_FFEFFECTLIST 2010 + /* constants */ #define TEST_POLL_TIME 100 @@ -95,4 +110,7 @@ struct JoystickData { #define TEST_AXIS_MIN -40 #define TEST_AXIS_MAX 40 +#define FF_PLAY_TIME 2*DI_SECONDS +#define FF_PERIOD_TIME FF_PLAY_TIME/4 + #endif diff --git a/dlls/joy.cpl/joy.rc b/dlls/joy.cpl/joy.rc index 22d9253e46e..0eb4378ca67 100644 --- a/dlls/joy.cpl/joy.rc +++ b/dlls/joy.cpl/joy.rc @@ -59,6 +59,10 @@ STYLE WS_CAPTION | WS_CHILD | WS_DISABLED CAPTION "Test Force Feedback" FONT 8, "Ms Shell Dlg" { + COMBOBOX IDC_FFSELECTCOMBO, 5, 5, 100, 30, CBS_DROPDOWNLIST | CBS_HASSTRINGS + LTEXT "Available Effects", IDC_STATIC, 10, 30, 100, 10 + LISTBOX IDC_FFEFFECTLIST, 10, 40, 180, 70, WS_TABSTOP | WS_VSCROLL | LBS_NOTIFY + LTEXT "Press any button in the controller to activate the chosen effect.", IDC_STATIC, 10, 110, 210, 25 } #define WINE_FILENAME_STR "joy.cpl" diff --git a/dlls/joy.cpl/main.c b/dlls/joy.cpl/main.c index e9b3a720e43..5c6ccb2a8f3 100644 --- a/dlls/joy.cpl/main.c +++ b/dlls/joy.cpl/main.c @@ -88,6 +88,9 @@ static BOOL CALLBACK enum_callback(const DIDEVICEINSTANCEW *instance, void *cont joystick->num_buttons = caps.dwButtons; joystick->num_axes = caps.dwAxes; + joystick->forcefeedback = caps.dwFlags & DIDC_FORCEFEEDBACK; + + if (joystick->forcefeedback) data->num_ff++; return DIENUM_CONTINUE; } @@ -111,10 +114,19 @@ static void initialize_joysticks(struct JoystickData *data) */ static void destroy_joysticks(struct JoystickData *data) { - int i; + int i, j; for (i = 0; i < data->num_joysticks; i++) { + + if (data->joysticks[i].forcefeedback) + { + for (j = 0; j < data->joysticks[i].num_effects; j++) + IDirectInputEffect_Release(data->joysticks[i].effects[j].effect); + + HeapFree(GetProcessHeap(), 0, data->joysticks[i].effects); + } + IDirectInputDevice8_Unacquire(data->joysticks[i].device); IDirectInputDevice8_Release(data->joysticks[i].device); } @@ -437,6 +449,255 @@ static INT_PTR CALLBACK test_dlgproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM return FALSE; } +/********************************************************************* + * Joystick force feedback testing functions + * + */ + +static void initialize_effects_list(HWND hwnd, struct Joystick* joy) +{ + int i; + + SendDlgItemMessageW(hwnd, IDC_FFEFFECTLIST, LB_RESETCONTENT, 0, 0); + + for (i=0; i < joy->num_effects; i++) + { + /* Effect names start with GUID_, so we'll skip this part */ + WCHAR *name = joy->effects[i].info.tszName + 5; + SendDlgItemMessageW(hwnd, IDC_FFEFFECTLIST, LB_ADDSTRING, 0, (LPARAM) name); + } +} + +static void ff_handle_joychange(HWND hwnd, struct JoystickData *data) +{ + int sel; + + if (data->num_ff == 0) return; + + sel = SendDlgItemMessageW(hwnd, IDC_FFSELECTCOMBO, CB_GETCURSEL, 0, 0); + data->chosen_joystick = SendDlgItemMessageW(hwnd, IDC_FFSELECTCOMBO, CB_GETITEMDATA, sel, 0); + initialize_effects_list(hwnd, &data->joysticks[data->chosen_joystick]); +} + +static void ff_handle_effectchange(HWND hwnd, struct Joystick *joy) +{ + int sel = SendDlgItemMessageW(hwnd, IDC_FFEFFECTLIST, LB_GETCURSEL, 0, 0); + + if (sel < 0) return; + + joy->chosen_effect = sel; +} + +static DWORD WINAPI ff_input_thread(void *param) +{ + struct JoystickData *data = param; + DIJOYSTATE state; + + ZeroMemory(&state, sizeof(state)); + + while (!data->stop) + { + int i; + struct Joystick *joy = &data->joysticks[data->chosen_joystick]; + int chosen_effect = joy->chosen_effect; + + /* Skip this if we have no effects */ + if (joy->num_effects == 0 || chosen_effect < 0) continue; + + poll_input(joy, &state); + + for (i=0; i < joy->num_buttons; i++) + if (state.rgbButtons[i]) + { + IDirectInputEffect_Start(joy->effects[chosen_effect].effect, 1, 0); + break; + } + + Sleep(TEST_POLL_TIME); + } + + return 0; +} + +/*********************************************************************** + * ff_effects_callback [internal] + * Enumerates, creates, sets the some parameters and stores all ff effects + * supported by the joystick. Works like enum_callback, counting the effects + * first and then storing them. + */ +static BOOL CALLBACK ff_effects_callback(const DIEFFECTINFOW *pdei, void *pvRef) +{ + HRESULT hr; + DIEFFECT dieffect; + DWORD axes[2] = {DIJOFS_X, DIJOFS_Y}; + int direction[2] = {0, 0}; + struct Joystick *joystick = pvRef; + + if (joystick->effects == NULL) + { + joystick->num_effects += 1; + return DIENUM_CONTINUE; + } + + hr = IDirectInputDevice8_Acquire(joystick->device); + + if (FAILED(hr)) return DIENUM_CONTINUE; + + ZeroMemory(&dieffect, sizeof(dieffect)); + + dieffect.dwSize = sizeof(dieffect); + dieffect.dwFlags = DIEFF_CARTESIAN; + dieffect.dwDuration = FF_PLAY_TIME; + + dieffect.cAxes = 2; + dieffect.rgdwAxes = axes; + dieffect.rglDirection = direction; + + if (IsEqualGUID(&pdei->guid, &GUID_RampForce)) + { + DIRAMPFORCE rforce; + + rforce.lStart = 0; + rforce.lEnd = DI_FFNOMINALMAX; + + dieffect.cbTypeSpecificParams = sizeof(rforce); + dieffect.lpvTypeSpecificParams = &rforce; + dieffect.dwFlags |= DIEP_TYPESPECIFICPARAMS; + } + else if (IsEqualGUID(&pdei->guid, &GUID_ConstantForce)) + { + DICONSTANTFORCE cforce; + + cforce.lMagnitude = DI_FFNOMINALMAX; + + dieffect.cbTypeSpecificParams = sizeof(cforce); + dieffect.lpvTypeSpecificParams = &cforce; + dieffect.dwFlags |= DIEP_TYPESPECIFICPARAMS; + } + else if (IsEqualGUID(&pdei->guid, &GUID_Sine) || + IsEqualGUID(&pdei->guid, &GUID_Square) || + IsEqualGUID(&pdei->guid, &GUID_Triangle) || + IsEqualGUID(&pdei->guid, &GUID_SawtoothUp) || + IsEqualGUID(&pdei->guid, &GUID_SawtoothDown)) + { + DIPERIODIC pforce; + + pforce.dwMagnitude = DI_FFNOMINALMAX; + pforce.lOffset = 0; + pforce.dwPhase = 0; + pforce.dwPeriod = FF_PERIOD_TIME; + + dieffect.cbTypeSpecificParams = sizeof(pforce); + dieffect.lpvTypeSpecificParams = &pforce; + dieffect.dwFlags |= DIEP_TYPESPECIFICPARAMS; + } + + hr = IDirectInputDevice2_CreateEffect( + joystick->device, &pdei->guid, &dieffect, &joystick->effects[joystick->cur_effect].effect, NULL); + + joystick->effects[joystick->cur_effect].params = dieffect; + joystick->effects[joystick->cur_effect].info = *pdei; + joystick->cur_effect += 1; + + return DIENUM_CONTINUE; +} + +/********************************************************************* + * ff_dlgproc [internal] + * + */ +static INT_PTR CALLBACK ff_dlgproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) +{ + static HANDLE thread; + static struct JoystickData *data; + TRACE("(%p, 0x%08x/%d, 0x%lx)\n", hwnd, msg, msg, lparam); + + switch (msg) + { + case WM_INITDIALOG: + { + int i, cur = 0; + + data = (struct JoystickData*) ((PROPSHEETPAGEW*)lparam)->lParam; + + /* Add joysticks with FF support to the combobox and get the effects */ + for (i = 0; i < data->num_joysticks; i++) + { + struct Joystick *joy = &data->joysticks[i]; + + if (joy->forcefeedback) + { + SendDlgItemMessageW(hwnd, IDC_FFSELECTCOMBO, CB_ADDSTRING, 0, (LPARAM) joy->instance.tszInstanceName); + SendDlgItemMessageW(hwnd, IDC_FFSELECTCOMBO, CB_SETITEMDATA, cur, i); + + cur++; + + /* Count device effects and then store them */ + joy->num_effects = 0; + joy->effects = NULL; + IDirectInputDevice8_EnumEffects(joy->device, ff_effects_callback, (void *) joy, 0); + joy->effects = HeapAlloc(GetProcessHeap(), 0, sizeof(struct Effect) * joy->num_effects); + + joy->cur_effect = 0; + IDirectInputDevice8_EnumEffects(joy->device, ff_effects_callback, (void*) joy, 0); + FIXME("%d --- %d\n", joy->num_effects, joy->cur_effect); + joy->num_effects = joy->cur_effect; + + } + } + + return TRUE; + } + + case WM_COMMAND: + switch(wparam) + { + case MAKEWPARAM(IDC_FFSELECTCOMBO, CBN_SELCHANGE): + ff_handle_joychange(hwnd, data); + + SendDlgItemMessageW(hwnd, IDC_FFEFFECTLIST, LB_SETCURSEL, 0, 0); + ff_handle_effectchange(hwnd, &data->joysticks[data->chosen_joystick]); + break; + + case MAKEWPARAM(IDC_FFEFFECTLIST, LBN_SELCHANGE): + ff_handle_effectchange(hwnd, &data->joysticks[data->chosen_joystick]); + break; + } + return TRUE; + + case WM_NOTIFY: + switch(((LPNMHDR)lparam)->code) + { + case PSN_SETACTIVE: + if (data->num_ff > 0) + { + DWORD tid; + + data->stop = FALSE; + /* Set the first joystick as default */ + SendDlgItemMessageW(hwnd, IDC_FFSELECTCOMBO, CB_SETCURSEL, 0, 0); + ff_handle_joychange(hwnd, data); + + SendDlgItemMessageW(hwnd, IDC_FFEFFECTLIST, LB_SETCURSEL, 0, 0); + ff_handle_effectchange(hwnd, &data->joysticks[data->chosen_joystick]); + + thread = CreateThread(NULL, 0, ff_input_thread, (void*) data, 0, &tid); + } + break; + + case PSN_RESET: /* intentional fall-through */ + case PSN_KILLACTIVE: + /* Stop ff thread */ + data->stop = TRUE; + MsgWaitForMultipleObjects(1, &thread, FALSE, INFINITE, 0); + CloseHandle(thread); + break; + } + return TRUE; + } + return FALSE; +} + /****************************************************************************** * propsheet_callback [internal] */ @@ -491,7 +752,7 @@ static void display_cpl_sheets(HWND parent, struct JoystickData *data) psp[id].dwSize = sizeof (PROPSHEETPAGEW); psp[id].hInstance = hcpl; psp[id].u.pszTemplate = MAKEINTRESOURCEW(IDD_FORCEFEEDBACK); - psp[id].pfnDlgProc = NULL; + psp[id].pfnDlgProc = ff_dlgproc; psp[id].lParam = (INT_PTR) data; id++; diff --git a/po/ar.po b/po/ar.po index 493c4434eda..6729491c357 100644 --- a/po/ar.po +++ b/po/ar.po @@ -3428,6 +3428,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy msgid "Game Controllers" diff --git a/po/bg.po b/po/bg.po index 0b44daca7ff..856e959a7c6 100644 --- a/po/bg.po +++ b/po/bg.po @@ -3454,6 +3454,15 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +msgid "Available Effects" +msgstr "На&пред" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy msgid "Game Controllers" diff --git a/po/ca.po b/po/ca.po index c9624d5af48..c26ea3b8eae 100644 --- a/po/ca.po +++ b/po/ca.po @@ -3503,6 +3503,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Formats disponibles" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/cs.po b/po/cs.po index 942c516daf7..042404ff927 100644 --- a/po/cs.po +++ b/po/cs.po @@ -3502,6 +3502,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Dostupné formáty" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/da.po b/po/da.po index 85ebffe8881..6f034979cbb 100644 --- a/po/da.po +++ b/po/da.po @@ -3474,6 +3474,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Tilgængelige formater" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/de.po b/po/de.po index 746364367c6..341cbf773b9 100644 --- a/po/de.po +++ b/po/de.po @@ -3461,6 +3461,16 @@ msgstr "Tasten" msgid "Test Force Feedback" msgstr "Force Feedback testen" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Verfügbare Formate" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "Gamecontroller" diff --git a/po/el.po b/po/el.po index 5bd5204924c..fbb74fbc1a7 100644 --- a/po/el.po +++ b/po/el.po @@ -3388,6 +3388,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "A&vailable buttons:" +msgid "Available Effects" +msgstr "Δ&ιαθέσιμα κουμπιά:" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy msgid "Game Controllers" diff --git a/po/en.po b/po/en.po index c6cd41adf40..d5821dbc569 100644 --- a/po/en.po +++ b/po/en.po @@ -3452,6 +3452,14 @@ msgstr "Buttons" msgid "Test Force Feedback" msgstr "Test Force Feedback" +#: joy.rc:63 +msgid "Available Effects" +msgstr "Available Effects" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "Press any button in the controller to activate the chosen effect." + #: joy.rc:28 msgid "Game Controllers" msgstr "Game Controllers" diff --git a/po/en_US.po b/po/en_US.po index c8c4e18f0cb..903658d74c2 100644 --- a/po/en_US.po +++ b/po/en_US.po @@ -3454,6 +3454,14 @@ msgstr "Buttons" msgid "Test Force Feedback" msgstr "Test Force Feedback" +#: joy.rc:63 +msgid "Available Effects" +msgstr "Available Effects" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "Press any button in the controller to activate the chosen effect." + #: joy.rc:28 msgid "Game Controllers" msgstr "Game Controllers" diff --git a/po/eo.po b/po/eo.po index 3a2b62770eb..590b9b8fab7 100644 --- a/po/eo.po +++ b/po/eo.po @@ -3369,6 +3369,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Disponeblaj formatoj" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/es.po b/po/es.po index 1d99ff500bc..94f0235435f 100644 --- a/po/es.po +++ b/po/es.po @@ -3488,6 +3488,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Formatos disponibles" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/fa.po b/po/fa.po index da32a09436b..0aa6b87bfbf 100644 --- a/po/fa.po +++ b/po/fa.po @@ -3428,6 +3428,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy msgid "Game Controllers" diff --git a/po/fi.po b/po/fi.po index 8b0b6ec6cc4..4da181b3a43 100644 --- a/po/fi.po +++ b/po/fi.po @@ -3449,6 +3449,16 @@ msgstr "Painikkeet" msgid "Test Force Feedback" msgstr "Testaa voimapalautetta" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Mahdolliset muodot" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "Peliohjaimet" diff --git a/po/fr.po b/po/fr.po index 7d6ccd7a00f..12f9bff76d4 100644 --- a/po/fr.po +++ b/po/fr.po @@ -3478,6 +3478,16 @@ msgstr "Boutons" msgid "Test Force Feedback" msgstr "Tester le retour de force" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Formats disponibles" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "Contrôleurs de jeu" diff --git a/po/he.po b/po/he.po index b2d025de11a..891b181c973 100644 --- a/po/he.po +++ b/po/he.po @@ -3456,6 +3456,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "התבניות הזמינות" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/hi.po b/po/hi.po index 287daf0eafe..be6cfa22f1b 100644 --- a/po/hi.po +++ b/po/hi.po @@ -3366,6 +3366,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "" diff --git a/po/hu.po b/po/hu.po index 4296a056312..f3ad46139b2 100644 --- a/po/hu.po +++ b/po/hu.po @@ -3490,6 +3490,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Elérhető formátumok" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/it.po b/po/it.po index c8f878aae76..1ceeda23bc3 100644 --- a/po/it.po +++ b/po/it.po @@ -3503,6 +3503,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Formati disponibili" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/ja.po b/po/ja.po index 3ac1082d24d..d345c798b70 100644 --- a/po/ja.po +++ b/po/ja.po @@ -3446,6 +3446,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "フォース フィードバックのテスト" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "利用できる形式" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "ゲーム コントローラ" diff --git a/po/ko.po b/po/ko.po index da0088bd0bb..09cbc37a646 100644 --- a/po/ko.po +++ b/po/ko.po @@ -3444,6 +3444,16 @@ msgstr "버튼" msgid "Test Force Feedback" msgstr "강제 피드백 시험" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "가능한 형식" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "게임 컨트롤러" diff --git a/po/lt.po b/po/lt.po index ee51bf19829..4d11dc4b378 100644 --- a/po/lt.po +++ b/po/lt.po @@ -3462,6 +3462,16 @@ msgstr "Mygtukai" msgid "Test Force Feedback" msgstr "Testuoti „Force Feedback“" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Galimi formatai" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "Žaidimų valdikliai" diff --git a/po/ml.po b/po/ml.po index 2d235c871f2..6a15883ffc6 100644 --- a/po/ml.po +++ b/po/ml.po @@ -3366,6 +3366,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "" diff --git a/po/nb_NO.po b/po/nb_NO.po index e3256d447a0..3ee22d35c41 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -3600,6 +3600,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Tilgjengelige formater" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/nl.po b/po/nl.po index bbf42a9bd37..b2a5d41a292 100644 --- a/po/nl.po +++ b/po/nl.po @@ -3517,6 +3517,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Beschikbare formaten" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/or.po b/po/or.po index 4b77a3707f4..c62c66ff782 100644 --- a/po/or.po +++ b/po/or.po @@ -3366,6 +3366,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "" diff --git a/po/pa.po b/po/pa.po index 36bc386114a..c8627ea57d7 100644 --- a/po/pa.po +++ b/po/pa.po @@ -3366,6 +3366,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "" diff --git a/po/pl.po b/po/pl.po index 23343098b6e..b36492d1278 100644 --- a/po/pl.po +++ b/po/pl.po @@ -3474,6 +3474,16 @@ msgstr "Przyciski" msgid "Test Force Feedback" msgstr "Testuj odczucie siły zwrotnej" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Dostępne formaty" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "Kontrolery gier" diff --git a/po/pt_BR.po b/po/pt_BR.po index 8990e86799e..3e2e078bfe4 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -3501,6 +3501,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Formatos Disponíveis" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/pt_PT.po b/po/pt_PT.po index 8b07863111a..010b3c0a9eb 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -3500,6 +3500,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Formatos Disponíveis" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/rm.po b/po/rm.po index e128856d369..d8c323e276a 100644 --- a/po/rm.po +++ b/po/rm.po @@ -3394,6 +3394,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "" diff --git a/po/ro.po b/po/ro.po index 88761ff772e..f8deac04c2b 100644 --- a/po/ro.po +++ b/po/ro.po @@ -3460,6 +3460,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Formate disponibile" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/ru.po b/po/ru.po index 7aff70283e1..b0592cf265c 100644 --- a/po/ru.po +++ b/po/ru.po @@ -3467,6 +3467,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Доступные форматы" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/sk.po b/po/sk.po index 28206f968eb..eb9deb9a814 100644 --- a/po/sk.po +++ b/po/sk.po @@ -3402,6 +3402,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Dostupné formáty" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "" diff --git a/po/sl.po b/po/sl.po index 277278b8e32..3d0b81c9ce8 100644 --- a/po/sl.po +++ b/po/sl.po @@ -3492,6 +3492,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Razpoložljive oblike" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/sr_RS@cyrillic.po b/po/sr_RS@cyrillic.po index 0f19a6823b1..9a7c1695dc4 100644 --- a/po/sr_RS@cyrillic.po +++ b/po/sr_RS@cyrillic.po @@ -3485,6 +3485,15 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +msgid "Available Effects" +msgstr "Н&апред" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/sr_RS@latin.po b/po/sr_RS@latin.po index 78b73323d53..7764f18627d 100644 --- a/po/sr_RS@latin.po +++ b/po/sr_RS@latin.po @@ -3563,6 +3563,15 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +msgid "Available Effects" +msgstr "N&apred" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/sv.po b/po/sv.po index b761700e388..1c0a7fe262e 100644 --- a/po/sv.po +++ b/po/sv.po @@ -3444,6 +3444,16 @@ msgstr "Knappar" msgid "Test Force Feedback" msgstr "Testa kraftåterkoppling" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Tillgängliga format" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "Spelkontroller" diff --git a/po/te.po b/po/te.po index 389e5895762..4e00f1314e6 100644 --- a/po/te.po +++ b/po/te.po @@ -3366,6 +3366,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "" diff --git a/po/th.po b/po/th.po index 732bebff5f3..d091d838d25 100644 --- a/po/th.po +++ b/po/th.po @@ -3405,6 +3405,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "A&vailable buttons:" +msgid "Available Effects" +msgstr "ทีเลือกได้:" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy msgid "Game Controllers" diff --git a/po/tr.po b/po/tr.po index 53e74110dfc..68583bcf0bb 100644 --- a/po/tr.po +++ b/po/tr.po @@ -3359,6 +3359,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Mevcut biçimler" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/uk.po b/po/uk.po index 710694adc71..432e9d29b91 100644 --- a/po/uk.po +++ b/po/uk.po @@ -3481,6 +3481,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "Доступні формати" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/wa.po b/po/wa.po index 6d64108fd40..a2190d02a87 100644 --- a/po/wa.po +++ b/po/wa.po @@ -3413,6 +3413,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "" diff --git a/po/wine.pot b/po/wine.pot index 3d32dd2dcb8..f9bfd13d5bf 100644 --- a/po/wine.pot +++ b/po/wine.pot @@ -3328,6 +3328,14 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +msgid "Available Effects" +msgstr "" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 194174ef272..309d8737ac8 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -3379,6 +3379,16 @@ msgstr "" msgid "Test Force Feedback" msgstr "" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "可选格式" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 #, fuzzy #| msgid "Create Control" diff --git a/po/zh_TW.po b/po/zh_TW.po index 10d848e6fdd..1f1df236a48 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -3408,6 +3408,16 @@ msgstr "按鈕" msgid "Test Force Feedback" msgstr "測試應力回饋" +#: joy.rc:63 +#, fuzzy +#| msgid "Available formats" +msgid "Available Effects" +msgstr "可用格式" + +#: joy.rc:65 +msgid "Press any button in the controller to activate the chosen effect." +msgstr "" + #: joy.rc:28 msgid "Game Controllers" msgstr "遊戲控制器"