joy.cpl: Tab for force feedback tests.

This commit is contained in:
Lucas Zawacki 2012-07-16 22:35:23 -03:00 committed by Alexandre Julliard
parent d05f9109c8
commit 37ce970629
48 changed files with 708 additions and 2 deletions

View File

@ -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

View File

@ -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"

View File

@ -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++;

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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 ""

View File

@ -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"

View File

@ -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"

View File

@ -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 "ゲーム コントローラ"

View File

@ -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 "게임 컨트롤러"

View File

@ -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"

View File

@ -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 ""

View File

@ -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"

View File

@ -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"

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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 ""

View File

@ -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"

View File

@ -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"

View File

@ -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 ""

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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 ""

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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"

View File

@ -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 "遊戲控制器"