LilyPad: General fixes and UI improvements

Some general fixes and UI improvements.

Adds Reset Configuration to Input/Force Feedback configuration screens that resets the configuration for the selected control(s).

Adds Restore Defaults button to the General tab that deletes all LilyPad
Settings and bindings and resets to the default settings.

Adds double-click functionality to the PAD list on the General tab,
which will now send the user straight to the corresponding PAD tab.
This commit is contained in:
FlatOutPS2 2017-03-10 14:47:24 +01:00 committed by Jonathan Li
parent 84a8fdadc5
commit f3a89f59e4
7 changed files with 129 additions and 42 deletions

View File

@ -279,27 +279,27 @@ wchar_t *GetCommandStringW(u8 command, int port, int slot)
if ((unsigned int)res - 1 <= 18)
return temp;
}
static wchar_t stick[2] = {'L', 'R'};
static wchar_t *stick[2] = {L"L-Stick", L"R-Stick"};
static wchar_t *dir[] = {
L"Up", L"Right",
L"Down", L"Left"};
wsprintfW(temp, L"%c-Stick %s", stick[(command - 0x20) / 4], dir[command & 3]);
wsprintfW(temp, L"%s %s", padtype == neGconPad ? L"Rotate" : stick[(command - 0x20) / 4], dir[command & 3]);
return temp;
}
/* Get text from the buttons. */
if (command >= 0x0F && command <= 0x2D) {
HWND hWnd = GetDlgItem(hWnds[port][slot][padtype], 0x10F0 + command);
if (!hWnd) {
if (!hWnd || ((padtype == Dualshock2Pad || padtype == neGconPad) && command >= 0x14 && command <= 0x17)) {
wchar_t *strings[] = {
L"Mouse", // 0x0F (15)
L"Select", // 0x10 (16)
L"L3", // 0x11 (17)
L"R3", // 0x12 (18)
L"Start", // 0x13 (19)
L"Up", // 0x14 (20)
L"Right", // 0x15 (21)
L"Down", // 0x16 (22)
L"Left", // 0x17 (23)
L"D-Pad Up", // 0x14 (20)
L"D-Pad Right", // 0x15 (21)
L"D-Pad Down", // 0x16 (22)
L"D-Pad Left", // 0x17 (23)
L"L2", // 0x18 (24)
L"R2", // 0x19 (25)
L"L1", // 0x1A (26)
@ -548,6 +548,7 @@ void SelChanged(int port, int slot)
}
}
ShowWindow(GetDlgItem(hWnd, ID_CONTROLS), ffb || b);
ShowWindow(GetDlgItem(hWnd, ID_RESET_CONFIG), ffb || b);
if (!ffb) {
SetLogSliderVal(hWnd, IDC_SLIDER_SENSITIVITY, GetDlgItem(hWnd, IDC_AXIS_SENSITIVITY), sensitivity);
@ -1393,8 +1394,13 @@ int BindCommand(Device *dev, unsigned int uid, unsigned int port, unsigned int s
if (port > 1 || slot > 3 || padtype >= numPadTypes)
return -1;
if (!sensitivity)
sensitivity = BASE_SENSITIVITY;
if (!sensitivity) {
if (((uid >> 16) & 0xFF) == ABSAXIS) {
sensitivity = BASE_ANALOG_SENSITIVITY;
} else {
sensitivity = BASE_SENSITIVITY;
}
}
if ((uid >> 16) & (PSHBTN | TGLBTN)) {
deadZone = 0;
skipDeadZone = 0;
@ -1562,6 +1568,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
AddTooltip(ID_LOCK_DIRECTION, hWnd);
AddTooltip(ID_LOCK_BUTTONS, hWnd);
AddTooltip(ID_TURBO_KEY, hWnd);
AddTooltip(ID_EXCLUDE, hWnd);
AddTooltip(IDC_RAPID_FIRE, hWnd);
AddTooltip(IDC_FLIP, hWnd);
AddTooltip(IDC_SLIDER_DEADZONE, hWnd);
@ -1895,11 +1902,11 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
// Just in case...
if (selected)
break;
Device *dev;
Binding *b;
ForceFeedbackBinding *ffb = 0;
int selIndex = ListView_GetNextItem(hWndList, -1, LVNI_SELECTED);
if (selIndex >= 0) {
Device *dev;
Binding *b;
ForceFeedbackBinding *ffb = 0;
if (GetBinding(port, slot, selIndex, dev, b, ffb)) {
selected = 0xFF;
hWndButtonProc.SetWndHandle(GetDlgItem(hWnd, cmd));
@ -1989,6 +1996,56 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
} else if (cmd == IDC_FLIP) {
int val = GetLogSliderVal(hWnd, IDC_SLIDER_SENSITIVITY);
ChangeValue(port, slot, &val, 0, 0, 0);
} else if (cmd == ID_RESET_CONFIG) {
// Just in case...
if (selected)
break;
int selIndex = ListView_GetNextItem(hWndList, -1, LVNI_SELECTED);
if (selIndex >= 0) {
Device *dev;
Binding *b;
ForceFeedbackBinding *ffb = 0;
if (GetBinding(port, slot, selIndex, dev, b, ffb)) {
selected = 0xFF;
if (b) {
VirtualControl *control = &dev->virtualControls[b->controlIndex];
for (int i = IDC_SLIDER_SENSITIVITY; i <= IDC_SLIDER_SKIP_DEADZONE; i++) {
if (i == IDC_SLIDER_SENSITIVITY) {
int val = BASE_SENSITIVITY;
if (((control->uid >> 16) & 0xFF) == ABSAXIS) {
val = BASE_ANALOG_SENSITIVITY;
}
ChangeValue(port, slot, &val, 0, 0, 0);
} else if (i == IDC_SLIDER_DEADZONE) {
int val = DEFAULT_DEADZONE;
if ((control->uid >> 16) & (PSHBTN | TGLBTN)) {
val = 0;
} else if ((control->uid >> 16) & PRESSURE_BTN) {
val = 1;
}
ChangeValue(port, slot, 0, 0, &val, 0);
} else if (i == IDC_SLIDER_SKIP_DEADZONE) {
int val = 1;
if ((control->uid >> 16) & (PSHBTN | TGLBTN)) {
val = 0;
}
ChangeValue(port, slot, 0, 0, 0, &val);
} else if (i == IDC_RAPID_FIRE) {
int val = 0;
ChangeValue(port, slot, 0, &val, 0, 0);
}
}
} else if (ffb) {
for (int i = IDC_FF_AXIS1; i <= IDC_FF_AXIS8; i += 0x10) {
int val = BASE_SENSITIVITY;
if (ffb->motor != ((i - IDC_FF_AXIS1) / 0x10) || IsDlgButtonChecked(hWnd, i - 1) != BST_CHECKED) {
val = 0;
}
ChangeEffect(port, slot, i, &val, 0);
}
}
}
}
} else if (cmd >= IDC_FF_AXIS1_ENABLED && cmd < IDC_FF_AXIS8_ENABLED + 16) {
int index = (cmd - IDC_FF_AXIS1_ENABLED) / 16;
int val = GetLogSliderVal(hWnd, 16 * index + IDC_FF_AXIS1);
@ -2225,7 +2282,6 @@ void UpdatePadList(HWND hWnd)
INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM lParam)
{
int i;
HWND hWndList = GetDlgItem(hWnd, IDC_PAD_LIST);
switch (msg) {
case WM_INITDIALOG: {
@ -2284,6 +2340,7 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
AddTooltip(IDC_DIAG_LIST, hWnd);
AddTooltip(IDC_G_XI, hWnd);
AddTooltip(IDC_ANALOG_START1, hWnd);
AddTooltip(ID_RESTORE_DEFAULTS, hWnd);
if (config.keyboardApi < 0 || config.keyboardApi > 3)
config.keyboardApi = NO_API;
@ -2356,6 +2413,21 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
break;
config.padConfigs[port][slot].autoAnalog = (IsDlgButtonChecked(hWnd, IDC_ANALOG_START1) == BST_CHECKED);
PropSheet_Changed(hWndProp, hWnd);
} else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == ID_RESTORE_DEFAULTS) {
int msgboxID = MessageBoxA(hWndProp, "This will delete all current settings and revert back to the default settings of LilyPad. Continue?",
"Restore Defaults Confirmation", MB_YESNO | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
switch (msgboxID) {
case IDNO:
break;
case IDYES:
char iniLocation[MAX_PATH * 2] = "inis/LilyPad.ini";
remove(iniLocation);
createIniDir = true;
LoadSettings(1);
GeneralDialogProc(hWnd, WM_INITDIALOG, 0, 0);
PropSheet_Changed(hWndProp, hWnd);
break;
}
} else {
int mtap = config.multitap[0] + 2 * config.multitap[1];
@ -2365,7 +2437,7 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
}
config.closeHack = IsDlgButtonChecked(hWnd, IDC_CLOSE_HACK) == BST_CHECKED;
for (i = 0; i < 4; i++) {
for (int i = 0; i < 4; i++) {
if (i && IsDlgButtonChecked(hWnd, IDC_KB_DISABLE + i) == BST_CHECKED) {
config.keyboardApi = (DeviceAPI)i;
}
@ -2444,7 +2516,11 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
if (n->hdr.code == LVN_ITEMCHANGED) {
UpdatePadList(hWnd);
}
if (n->hdr.code == NM_RCLICK) {
if (n->hdr.code == NM_DBLCLK) {
UpdatePadList(hWnd);
int index = ListView_GetNextItem(hWndList, -1, LVNI_SELECTED);
PropSheet_SetCurSel(hWndProp, 0, index + 1);
} else if (n->hdr.code == NM_RCLICK) {
UpdatePadList(hWnd);
int index = ListView_GetNextItem(hWndList, -1, LVNI_SELECTED);
int port1, slot1, port2, slot2, padtype1, padtype2;

View File

@ -80,7 +80,7 @@ Binding 27=0x00200004, 0, 19, 65536, 0, 0, 1, 2
Binding 28=0x00200005, 0, 16, 65536, 0, 0, 1, 2
Binding 29=0x00200008, 0, 25, 65536, 0, 0, 1, 2
Binding 30=0x00200009, 0, 28, 65536, 0, 0, 1, 2
Binding 31=0x0020000F, 0, 31, 65536, 0, 0, 1, 2
Binding 31=0x0020000F, 0, 30, 65536, 0, 0, 1, 2
Binding 32=0x00200010, 0, 29, 65536, 0, 0, 1, 2
Binding 33=0x00200011, 0, 31, 65536, 0, 0, 1, 2
Binding 34=0x01020014, 0, 32, 65536, 0, 0, 13172, 2
@ -153,7 +153,7 @@ Binding 27=0x00200004, 1, 19, 65536, 0, 0, 1, 2
Binding 28=0x00200005, 1, 16, 65536, 0, 0, 1, 2
Binding 29=0x00200008, 1, 25, 65536, 0, 0, 1, 2
Binding 30=0x00200009, 1, 28, 65536, 0, 0, 1, 2
Binding 31=0x0020000F, 1, 31, 65536, 0, 0, 1, 2
Binding 31=0x0020000F, 1, 30, 65536, 0, 0, 1, 2
Binding 32=0x00200010, 1, 29, 65536, 0, 0, 1, 2
Binding 33=0x00200011, 1, 31, 65536, 0, 0, 1, 2
Binding 34=0x01020014, 1, 32, 65536, 0, 0, 13172, 2

View File

@ -24,6 +24,7 @@
// a value of 128 or more corresponds to that button being pressed, for binary
// values.
#define BASE_SENSITIVITY (1 << 16)
#define BASE_ANALOG_SENSITIVITY (87183)
#define FULLY_DOWN (1 << 16)
#define DEFAULT_DEADZONE (BASE_SENSITIVITY * 201 / 1000)

View File

@ -361,25 +361,25 @@ void AddForce(ButtonSum *sum, u8 cmd, int delta = 255)
}
// Left stick.
else if (cmd < 0x24) {
if (cmd == 32) {
if (cmd == 0x20) { // Up
sum->sticks[1].vert -= delta;
} else if (cmd == 33) {
} else if (cmd == 0x21) { // Right
sum->sticks[1].horiz += delta;
} else if (cmd == 34) {
} else if (cmd == 0x22) { // Down
sum->sticks[1].vert += delta;
} else if (cmd == 35) {
} else if (cmd == 0x23) { // Left
sum->sticks[1].horiz -= delta;
}
}
// Right stick.
else if (cmd < 0x28) {
if (cmd == 36) {
if (cmd == 0x24) { // Up
sum->sticks[0].vert -= delta;
} else if (cmd == 37) {
} else if (cmd == 0x25) { // Right
sum->sticks[0].horiz += delta;
} else if (cmd == 38) {
} else if (cmd == 0x26) { // Down
sum->sticks[0].vert += delta;
} else if (cmd == 39) {
} else if (cmd == 0x27) { // Left
sum->sticks[0].horiz -= delta;
}
}
@ -1336,10 +1336,10 @@ u8 CALLBACK PADpoll(u8 value)
//query.response[4] &= pad->mask[1];
// No need to cap these, already done int CapSum().
query.response[9] = (unsigned char)sum->buttons[13]; //D-pad right
query.response[10] = (unsigned char)sum->buttons[15]; //D-pad left
query.response[11] = (unsigned char)sum->buttons[12]; //D-pad up
query.response[12] = (unsigned char)sum->buttons[14]; //D-pad down
query.response[9] = (unsigned char)sum->buttons[13]; // D-pad right
query.response[10] = (unsigned char)sum->buttons[15]; // D-pad left
query.response[11] = (unsigned char)sum->buttons[12]; // D-pad up
query.response[12] = (unsigned char)sum->buttons[14]; // D-pad down
query.response[13] = (unsigned char)sum->buttons[8]; // Triangle
query.response[14] = (unsigned char)sum->buttons[9]; // Circle

View File

@ -106,6 +106,7 @@ BEGIN
PUSHBUTTON "Exclude Input",ID_EXCLUDE,7,246,58,15
// Force Feedback & Input configurations:
PUSHBUTTON "Back to Controls",ID_CONTROLS,196,260,59,15
PUSHBUTTON "Reset Configuration",ID_RESET_CONFIG,259,260,72,15
// Force Feedback configuration:
GROUPBOX "",ID_FF,195,9,222,248
COMBOBOX IDC_FF_EFFECT,203,23,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@ -133,10 +134,10 @@ BEGIN
CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,243,91,10
CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,243,35,10
EDITTEXT IDC_FF_AXIS6_SCALE,375,243,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
PUSHBUTTON "Test",ID_TEST,257,260,59,15
PUSHBUTTON "Test",ID_TEST,335,260,59,15
// Input configuration:
GROUPBOX "Configure Binding",ID_SENSITIVITY,195,9,222,110
EDITTEXT IDC_AXIS_DEVICE,202,22,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_AXIS_DEVICE,202,22,72,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
COMBOBOX IDC_AXIS_DIRECTION,276,20,70,47,CBS_DROPDOWNLIST | WS_TABSTOP
EDITTEXT IDC_AXIS_CONTROL,349,22,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,37,27,10
@ -189,6 +190,7 @@ BEGIN
PUSHBUTTON "Exclude Input",ID_EXCLUDE,7,246,58,15
// Force Feedback & Input configurations:
PUSHBUTTON "Back to Controls",ID_CONTROLS,196,260,59,15
PUSHBUTTON "Reset Configuration",ID_RESET_CONFIG,259,260,72,15
// Force Feedback configuration:
GROUPBOX "",ID_FF,195,9,222,248
COMBOBOX IDC_FF_EFFECT,203,23,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@ -216,10 +218,10 @@ BEGIN
CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,243,91,10
CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,243,35,10
EDITTEXT IDC_FF_AXIS6_SCALE,375,243,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
PUSHBUTTON "Test",ID_TEST,257,260,59,15
PUSHBUTTON "Test",ID_TEST,335,260,59,15
// Input configuration:
GROUPBOX "Configure Binding",ID_SENSITIVITY,195,9,222,110
EDITTEXT IDC_AXIS_DEVICE,202,22,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_AXIS_DEVICE,202,22,72,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
COMBOBOX IDC_AXIS_DIRECTION,276,20,70,47,CBS_DROPDOWNLIST | WS_TABSTOP
EDITTEXT IDC_AXIS_CONTROL,349,22,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,37,27,10
@ -272,6 +274,7 @@ BEGIN
PUSHBUTTON "Exclude Input",ID_EXCLUDE,7,246,58,15
// Force Feedback & Input configurations:
PUSHBUTTON "Back to Controls",ID_CONTROLS,196,260,59,15
PUSHBUTTON "Reset Configuration",ID_RESET_CONFIG,259,260,72,15
// Force Feedback configuration:
GROUPBOX "",ID_FF,195,9,222,248
COMBOBOX IDC_FF_EFFECT,203,23,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@ -299,10 +302,10 @@ BEGIN
CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,243,91,10
CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,243,35,10
EDITTEXT IDC_FF_AXIS6_SCALE,375,243,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
PUSHBUTTON "Test",ID_TEST,257,260,59,15
PUSHBUTTON "Test",ID_TEST,335,260,59,15
// Input configuration:
GROUPBOX "Configure Binding",ID_SENSITIVITY,195,9,222,110
EDITTEXT IDC_AXIS_DEVICE,202,22,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_AXIS_DEVICE,202,22,72,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
COMBOBOX IDC_AXIS_DIRECTION,276,20,70,47,CBS_DROPDOWNLIST | WS_TABSTOP
EDITTEXT IDC_AXIS_CONTROL,349,22,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,37,27,10
@ -353,9 +356,10 @@ BEGIN
PUSHBUTTON "Exclude Input",ID_EXCLUDE,7,246,58,15
// Force Feedback & Input configurations:
PUSHBUTTON "Back to Controls",ID_CONTROLS,196,260,59,15
PUSHBUTTON "Reset Configuration",ID_RESET_CONFIG,259,260,72,15
// Input configuration:
GROUPBOX "Configure Binding",ID_SENSITIVITY,195,9,222,110
EDITTEXT IDC_AXIS_DEVICE,202,22,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_AXIS_DEVICE,202,22,72,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
COMBOBOX IDC_AXIS_DIRECTION,276,20,70,47,CBS_DROPDOWNLIST | WS_TABSTOP
EDITTEXT IDC_AXIS_CONTROL,349,22,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,37,27,10
@ -416,9 +420,10 @@ BEGIN
PUSHBUTTON "Exclude Input",ID_EXCLUDE,7,246,58,15
// Force Feedback & Input configurations:
PUSHBUTTON "Back to Controls",ID_CONTROLS,196,260,59,15
PUSHBUTTON "Reset Configuration",ID_RESET_CONFIG,259,260,72,15
// Input configuration:
GROUPBOX "Configure Binding",ID_SENSITIVITY,195,9,222,110
EDITTEXT IDC_AXIS_DEVICE,202,22,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_AXIS_DEVICE,202,22,72,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
COMBOBOX IDC_AXIS_DIRECTION,276,20,70,47,CBS_DROPDOWNLIST | WS_TABSTOP
EDITTEXT IDC_AXIS_CONTROL,349,22,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,37,27,10

View File

@ -65,6 +65,8 @@ LPWSTR dialog_message(int ID, bool *updateText)
L"Right-click and select \"Refresh\" to update the list of devices in case a recently connected device has not shown up yet.";
case IDC_G_XI:
return L"Xbox 360 controllers(and devices imitating it) only";
case ID_RESTORE_DEFAULTS:
return L"Restores the default contents of LilyPad.ini, undoing all settings changes and bindings that have been set up.";
// Pad tabs
case IDC_BINDINGS_LIST:
return L"Shows a list of currently bound inputs of the selected Pad.\n\n"
@ -92,6 +94,9 @@ LPWSTR dialog_message(int ID, bool *updateText)
L"Note: Analog mode enables the analog sticks to function on a DualShock controller, while in digital mode it behaves as an original PlayStation controller.\n\n";
case ID_TURBO_KEY:
return L"Sets a key to send a TAB press to the emulator, which toggles Turbo mode(200% speed) in PCSX2.";
case ID_EXCLUDE:
return L"Disables an input so it will be ignored when trying to bind another input.\n\n"
L"This is helpful when binding controls for a device with an input that's difficult to center like an accelerator, or just always active like a faulty button or analog stick.";
case ID_LOCK_ALL_INPUT:
return L"Locks the current state of the pad. Any further input is handled normally, but the initial pad state is the locked state instead of a state with no buttons pressed. "
L"Pressing it again releases the old pad state, if the old pad state had any keys pressed. Otherwise, it's released automatically.";

View File

@ -123,10 +123,9 @@
#define ID_CLEAR 0x1232
#define ID_SPECIAL_INPUTS 0x1233
// Pad Force Feedback configuration:
#define ID_CONTROLS 0x1300
#define ID_TEST 0x1301
#define ID_FF 0x1302
#define IDC_FF_EFFECT 0x1303
#define ID_TEST 0x1300
#define ID_FF 0x1301
#define IDC_FF_EFFECT 0x1302
#define IDC_FF_AXIS1_ENABLED 0x1310
#define IDC_FF_AXIS1 0x1311
#define IDC_FF_AXIS1_FLIP 0x1312
@ -161,6 +160,7 @@
#define IDC_FF_AXIS8_SCALE 0x1383
// Force Feedback & Input configurations:
#define ID_CONTROLS 0x1390
#define ID_RESET_CONFIG 0x1391
// Next default values for new objects
//
@ -168,7 +168,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 116
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 5009
#define _APS_NEXT_CONTROL_VALUE 5010
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif