LilyPad: GUI update

Updates the UI by reducing the height of the plugin window. This has
been achieved by removing some buttons below the diagnostics and
bindings list and incorporating those functions into the
lists(accessible by right-clicking in the list). The binding
configurations on the Pad tabs have been moved to a separate page, like
the Forcefeedback bindings, to separate the configuration from the
bindings.
This commit is contained in:
FlatOutPS2 2016-11-30 13:39:12 +01:00 committed by Jonathan Li
parent deaceb6b08
commit 1f8608f6dd
5 changed files with 402 additions and 276 deletions

View File

@ -28,6 +28,8 @@
#include "WndProcEater.h" #include "WndProcEater.h"
#include "DualShock3.h" #include "DualShock3.h"
#include <Shlwapi.h>
// Needed to know if raw input is available. It requires XP or higher. // Needed to know if raw input is available. It requires XP or higher.
#include "RawInput.h" #include "RawInput.h"
@ -231,7 +233,7 @@ void RefreshEnabledDevicesAndDisplay(int updateDeviceList = 0, HWND hWnd = 0, in
{ {
RefreshEnabledDevices(updateDeviceList); RefreshEnabledDevices(updateDeviceList);
if (hWnd) { if (hWnd) {
HWND hWndList = GetDlgItem(hWnd, IDC_LIST); HWND hWndList = GetDlgItem(hWnd, IDC_DIAG_LIST);
ListView_SetExtendedListViewStyleEx(hWndList, LVS_EX_DOUBLEBUFFER, LVS_EX_DOUBLEBUFFER); ListView_SetExtendedListViewStyleEx(hWndList, LVS_EX_DOUBLEBUFFER, LVS_EX_DOUBLEBUFFER);
int count = ListView_GetItemCount(hWndList); int count = ListView_GetItemCount(hWndList);
LVITEM item; LVITEM item;
@ -374,7 +376,7 @@ void SelChanged(int port, int slot)
HWND hWnd = hWnds[port][slot][padtype]; HWND hWnd = hWnds[port][slot][padtype];
if (!hWnd) if (!hWnd)
return; return;
HWND hWndTemp, hWndList = GetDlgItem(hWnd, IDC_LIST); HWND hWndTemp, hWndList = GetDlgItem(hWnd, IDC_BINDINGS_LIST);
int j, i = ListView_GetSelectedCount(hWndList); int j, i = ListView_GetSelectedCount(hWndList);
wchar_t *devName = L"N/A"; wchar_t *devName = L"N/A";
wchar_t *key = L"N/A"; wchar_t *key = L"N/A";
@ -490,12 +492,21 @@ void SelChanged(int port, int slot)
} }
} }
for (i = IDC_SLIDER_SENSITIVITY; i < ID_DELETE; i++) { for (i = IDC_DPAD; i < ID_FORCEFEEDBACK_BOX; i++) {
hWndTemp = GetDlgItem(hWnd, i); hWndTemp = GetDlgItem(hWnd, i);
if (hWndTemp) if (hWndTemp)
ShowWindow(hWndTemp, ffb == 0); ShowWindow(hWndTemp, !ffb && !b);
} }
for (i = 0x1300; i < 0x1400; i++) { for (i = IDC_SLIDER_SENSITIVITY; i <= IDC_AXIS_SKIP_DEADZONE; i++) {
hWndTemp = GetDlgItem(hWnd, i);
if (hWndTemp)
ShowWindow(hWndTemp, !ffb && b);
if (i == IDC_SKIP_DEADZONE_OFF && skipDeadZone > deadZone)
ShowWindow(hWndTemp, 0);
if (i == IDC_AXIS_SKIP_DEADZONE && skipDeadZone <= deadZone)
ShowWindow(hWndTemp, 0);
}
for (i = ID_TEST; i <= IDC_FF_AXIS8_SCALE; i++) {
hWndTemp = GetDlgItem(hWnd, i); hWndTemp = GetDlgItem(hWnd, i);
if (hWndTemp) { if (hWndTemp) {
int enable = ffb != 0; int enable = ffb != 0;
@ -531,6 +542,8 @@ void SelChanged(int port, int slot)
ShowWindow(hWndTemp, enable); ShowWindow(hWndTemp, enable);
} }
} }
ShowWindow(GetDlgItem(hWnd, ID_CONTROLS), ffb || b);
if (!ffb) { if (!ffb) {
SetLogSliderVal(hWnd, IDC_SLIDER_SENSITIVITY, GetDlgItem(hWnd, IDC_AXIS_SENSITIVITY), sensitivity); SetLogSliderVal(hWnd, IDC_SLIDER_SENSITIVITY, GetDlgItem(hWnd, IDC_AXIS_SENSITIVITY), sensitivity);
SetLogSliderVal(hWnd, IDC_SLIDER_DEADZONE, GetDlgItem(hWnd, IDC_AXIS_DEADZONE), deadZone); SetLogSliderVal(hWnd, IDC_SLIDER_DEADZONE, GetDlgItem(hWnd, IDC_AXIS_DEADZONE), deadZone);
@ -645,7 +658,7 @@ int ListBoundCommand(int port, int slot, Device *dev, Binding *b)
int padtype = config.padConfigs[port][slot].type; int padtype = config.padConfigs[port][slot].type;
if (!hWnds[port][slot][padtype]) if (!hWnds[port][slot][padtype])
return -1; return -1;
HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_LIST); HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_BINDINGS_LIST);
int index = -1; int index = -1;
if (hWndList) { if (hWndList) {
index = GetItemIndex(port, slot, dev, b); index = GetItemIndex(port, slot, dev, b);
@ -673,7 +686,7 @@ int ListBoundEffect(int port, int slot, Device *dev, ForceFeedbackBinding *b)
int padtype = config.padConfigs[port][slot].type; int padtype = config.padConfigs[port][slot].type;
if (!hWnds[port][slot][padtype]) if (!hWnds[port][slot][padtype])
return -1; return -1;
HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_LIST); HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_BINDINGS_LIST);
int index = -1; int index = -1;
if (hWndList) { if (hWndList) {
index = GetItemIndex(port, slot, dev, b); index = GetItemIndex(port, slot, dev, b);
@ -703,7 +716,7 @@ void ChangeValue(int port, int slot, int *newSensitivity, int *newTurbo, int *ne
int padtype = config.padConfigs[port][slot].type; int padtype = config.padConfigs[port][slot].type;
if (!hWnds[port][slot][padtype]) if (!hWnds[port][slot][padtype])
return; return;
HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_LIST); HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_BINDINGS_LIST);
int count = ListView_GetSelectedCount(hWndList); int count = ListView_GetSelectedCount(hWndList);
if (count < 1) if (count < 1)
return; return;
@ -748,7 +761,7 @@ void ChangeEffect(int port, int slot, int id, int *newForce, unsigned int *newEf
int padtype = config.padConfigs[port][slot].type; int padtype = config.padConfigs[port][slot].type;
if (!hWnds[port][slot][padtype]) if (!hWnds[port][slot][padtype])
return; return;
HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_LIST); HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_BINDINGS_LIST);
int i = ListView_GetSelectedCount(hWndList); int i = ListView_GetSelectedCount(hWndList);
if (i != 1) if (i != 1)
return; return;
@ -780,7 +793,7 @@ void Populate(int port, int slot, int padtype)
{ {
if (!hWnds[port][slot][padtype]) if (!hWnds[port][slot][padtype])
return; return;
HWND hWnd = GetDlgItem(hWnds[port][slot][padtype], IDC_LIST); HWND hWnd = GetDlgItem(hWnds[port][slot][padtype], IDC_BINDINGS_LIST);
ListView_DeleteAllItems(hWnd); ListView_DeleteAllItems(hWnd);
int i, j; int i, j;
@ -1157,7 +1170,7 @@ inline int GetPort(HWND hWnd, int *slot)
void Diagnostics(HWND hWnd) void Diagnostics(HWND hWnd)
{ {
HWND hWndList = GetDlgItem(hWnd, IDC_LIST); HWND hWndList = GetDlgItem(hWnd, IDC_DIAG_LIST);
if (!hWndList) if (!hWndList)
return; return;
int index = ListView_GetNextItem(hWndList, -1, LVNI_SELECTED); int index = ListView_GetNextItem(hWndList, -1, LVNI_SELECTED);
@ -1174,8 +1187,32 @@ void Diagnostics(HWND hWnd)
RefreshEnabledDevicesAndDisplay(0, hWnd, 1); RefreshEnabledDevicesAndDisplay(0, hWnd, 1);
} }
// Tooltips will only show if the TOOLINFO cbSize <= the struct size. If it's
// smaller some functionality might be disabled. So let's try and use the
// correct size.
UINT GetTooltipStructSize()
{
DLLGETVERSIONPROC dllGetVersion = (DLLGETVERSIONPROC)GetProcAddress(GetModuleHandle(L"ComCtl32.dll"), "DllGetVersion");
if (dllGetVersion) {
DLLVERSIONINFO2 dllversion = {0};
dllversion.info1.cbSize = sizeof(DLLVERSIONINFO2);
if (dllGetVersion((DLLVERSIONINFO *)&dllversion) == S_OK) {
// Minor, then major version.
DWORD version = MAKELONG(dllversion.info1.dwMinorVersion, dllversion.info1.dwMajorVersion);
DWORD tooltip_v3 = MAKELONG(0, 6);
if (version >= tooltip_v3)
return TTTOOLINFOA_V3_SIZE;
}
}
// Should be fine for XP and onwards, comctl versions >= 4.7 should at least
// be this size.
return TTTOOLINFOA_V2_SIZE;
}
void AddTooltip(UINT id, HWND hWnd) void AddTooltip(UINT id, HWND hWnd)
{ {
static UINT tooltipStructSize = GetTooltipStructSize();
bool hasTooltip; bool hasTooltip;
LPWSTR message = dialog_message(id, &hasTooltip); LPWSTR message = dialog_message(id, &hasTooltip);
if (!hasTooltip) if (!hasTooltip)
@ -1194,7 +1231,7 @@ void AddTooltip(UINT id, HWND hWnd)
return; return;
TOOLINFO toolInfo = {0}; TOOLINFO toolInfo = {0};
toolInfo.cbSize = sizeof(toolInfo); toolInfo.cbSize = tooltipStructSize;
toolInfo.hwnd = hWnd; toolInfo.hwnd = hWnd;
toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
toolInfo.uId = (UINT_PTR)hWndTooltip; toolInfo.uId = (UINT_PTR)hWndTooltip;
@ -1236,7 +1273,7 @@ void DeleteBinding(int port, int slot, int padtype, Device *dev, Binding *b)
if (dev->enabled && hWnds[port][slot][padtype]) { if (dev->enabled && hWnds[port][slot][padtype]) {
int count = GetItemIndex(port, slot, dev, b); int count = GetItemIndex(port, slot, dev, b);
if (count >= 0) { if (count >= 0) {
HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_LIST); HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_BINDINGS_LIST);
if (hWndList) { if (hWndList) {
ListView_DeleteItem(hWndList, count); ListView_DeleteItem(hWndList, count);
} }
@ -1254,7 +1291,7 @@ void DeleteBinding(int port, int slot, Device *dev, ForceFeedbackBinding *b)
if (dev->enabled && hWnds[port][slot][padtype]) { if (dev->enabled && hWnds[port][slot][padtype]) {
int count = GetItemIndex(port, slot, dev, b); int count = GetItemIndex(port, slot, dev, b);
if (count >= 0) { if (count >= 0) {
HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_LIST); HWND hWndList = GetDlgItem(hWnds[port][slot][padtype], IDC_BINDINGS_LIST);
if (hWndList) { if (hWndList) {
ListView_DeleteItem(hWndList, count); ListView_DeleteItem(hWndList, count);
} }
@ -1288,7 +1325,7 @@ int DeleteSelected(int port, int slot)
int padtype = config.padConfigs[port][slot].type; int padtype = config.padConfigs[port][slot].type;
if (!hWnds[port][slot][padtype]) if (!hWnds[port][slot][padtype])
return 0; return 0;
HWND hWnd = GetDlgItem(hWnds[port][slot][padtype], IDC_LIST); HWND hWnd = GetDlgItem(hWnds[port][slot][padtype], IDC_BINDINGS_LIST);
int changes = 0; int changes = 0;
while (1) { while (1) {
int index = ListView_GetNextItem(hWnd, -1, LVNI_SELECTED); int index = ListView_GetNextItem(hWnd, -1, LVNI_SELECTED);
@ -1472,7 +1509,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
int slot; int slot;
int port = GetPort(hWnd, &slot); int port = GetPort(hWnd, &slot);
int padtype = config.padConfigs[port][slot].type; int padtype = config.padConfigs[port][slot].type;
HWND hWndList = GetDlgItem(hWnd, IDC_LIST); HWND hWndList = GetDlgItem(hWnd, IDC_BINDINGS_LIST);
switch (msg) { switch (msg) {
case WM_INITDIALOG: { case WM_INITDIALOG: {
ListView_SetExtendedListViewStyleEx(hWndList, LVS_EX_DOUBLEBUFFER, LVS_EX_DOUBLEBUFFER); ListView_SetExtendedListViewStyleEx(hWndList, LVS_EX_DOUBLEBUFFER, LVS_EX_DOUBLEBUFFER);
@ -1499,6 +1536,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
if (port || slot) if (port || slot)
EnableWindow(GetDlgItem(hWnd, ID_IGNORE), 0); EnableWindow(GetDlgItem(hWnd, ID_IGNORE), 0);
AddTooltip(IDC_BINDINGS_LIST, hWnd);
AddTooltip(ID_MOUSE, hWnd); AddTooltip(ID_MOUSE, hWnd);
AddTooltip(ID_ANALOG, hWnd); AddTooltip(ID_ANALOG, hWnd);
AddTooltip(ID_IGNORE, hWnd); AddTooltip(ID_IGNORE, hWnd);
@ -1586,7 +1624,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
return 1; return 1;
} }
break; break;
} else if (n->hdr.idFrom == IDC_LIST) { } else if (n->hdr.idFrom == IDC_BINDINGS_LIST) {
static int NeedUpdate = 0; static int NeedUpdate = 0;
if (n->hdr.code == LVN_KEYDOWN) { if (n->hdr.code == LVN_KEYDOWN) {
NMLVKEYDOWN *key = (NMLVKEYDOWN *)n; NMLVKEYDOWN *key = (NMLVKEYDOWN *)n;
@ -1607,6 +1645,35 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
NeedUpdate = 0; NeedUpdate = 0;
SelChanged(port, slot); SelChanged(port, slot);
} }
if (n->hdr.code == NM_RCLICK) {
HMENU hMenu = CreatePopupMenu();
if (!hMenu)
break;
MENUITEMINFOW info;
wchar_t text[40];
info.cbSize = sizeof(info);
info.fMask = MIIM_STRING | MIIM_ID;
info.dwTypeData = text;
info.wID = 1;
wsprintfW(text, L"Delete Selected");
InsertMenuItemW(hMenu, 0, 1, &info);
info.wID = 2;
wsprintfW(text, L"Clear All");
InsertMenuItemW(hMenu, 1, 1, &info);
POINT pos;
GetCursorPos(&pos);
short res = TrackPopupMenuEx(hMenu, TPM_NONOTIFY | TPM_RETURNCMD, pos.x, pos.y, hWndProp, 0);
DestroyMenu(hMenu);
if (res == 0)
break;
else if (res == 1) {
if (DeleteSelected(port, slot))
PropSheet_Changed(hWndProp, hWnd);
} else if (res == 2) {
while (DeleteByIndex(port, slot, 0))
PropSheet_Changed(hWndProp, hWnd);
}
}
} }
} break; } break;
case WM_HSCROLL: { case WM_HSCROLL: {
@ -1650,13 +1717,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
} else if (HIWORD(wParam) == BN_CLICKED) { } else if (HIWORD(wParam) == BN_CLICKED) {
EndBinding(hWnd); EndBinding(hWnd);
int cmd = LOWORD(wParam); int cmd = LOWORD(wParam);
if (cmd == ID_DELETE) { if (cmd == ID_BIG_MOTOR || cmd == ID_SMALL_MOTOR) {
if (DeleteSelected(port, slot))
PropSheet_Changed(hWndProp, hWnd);
} else if (cmd == ID_CLEAR) {
while (DeleteByIndex(port, slot, 0))
PropSheet_Changed(hWndProp, hWnd);
} else if (cmd == ID_BIG_MOTOR || cmd == ID_SMALL_MOTOR) {
int i = (int)SendMessage(GetDlgItem(hWnd, IDC_FORCEFEEDBACK), CB_GETCURSEL, 0, 0); int i = (int)SendMessage(GetDlgItem(hWnd, IDC_FORCEFEEDBACK), CB_GETCURSEL, 0, 0);
if (i >= 0) { if (i >= 0) {
unsigned int index = (unsigned int)SendMessage(GetDlgItem(hWnd, IDC_FORCEFEEDBACK), CB_GETITEMDATA, i, 0); unsigned int index = (unsigned int)SendMessage(GetDlgItem(hWnd, IDC_FORCEFEEDBACK), CB_GETITEMDATA, i, 0);
@ -2037,7 +2098,11 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
c.cx = 120; c.cx = 120;
c.pszText = L"Type"; c.pszText = L"Type";
ListView_InsertColumn(hWndList, 1, &c); ListView_InsertColumn(hWndList, 1, &c);
c.cx = 70; if (config.multitap[0] || config.multitap[1]) {
c.cx = 84;
} else {
c.cx = 101;
}
c.pszText = L"Bindings"; c.pszText = L"Bindings";
ListView_InsertColumn(hWndList, 2, &c); ListView_InsertColumn(hWndList, 2, &c);
selected = 0; selected = 0;
@ -2081,7 +2146,7 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
AddTooltip(IDC_MULTIPLE_BINDING, hWnd); AddTooltip(IDC_MULTIPLE_BINDING, hWnd);
AddTooltip(IDC_PAD_LIST, hWnd); AddTooltip(IDC_PAD_LIST, hWnd);
AddTooltip(IDC_PAD_TYPE, hWnd); AddTooltip(IDC_PAD_TYPE, hWnd);
AddTooltip(ID_TEST, hWnd); AddTooltip(IDC_DIAG_LIST, hWnd);
AddTooltip(IDC_ANALOG_START1, hWnd); AddTooltip(IDC_ANALOG_START1, hWnd);
if (config.keyboardApi < 0 || config.keyboardApi > 3) if (config.keyboardApi < 0 || config.keyboardApi > 3)
@ -2148,14 +2213,6 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
} }
} }
break; break;
}
else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == ID_TEST) {
Diagnostics(hWnd);
RefreshEnabledDevices();
} else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == ID_REFRESH) {
RefreshEnabledDevicesAndDisplay(1, hWnd, 1);
UpdatePadList(hWnd);
} else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_ANALOG_START1) { } else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_ANALOG_START1) {
int index = ListView_GetNextItem(hWndList, -1, LVNI_SELECTED); int index = ListView_GetNextItem(hWndList, -1, LVNI_SELECTED);
int port, slot; int port, slot;
@ -2191,6 +2248,11 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
if (mtap != config.multitap[0] + 2 * config.multitap[1]) { if (mtap != config.multitap[0] + 2 * config.multitap[1]) {
UpdatePadPages(); UpdatePadPages();
if (config.multitap[0] || config.multitap[1]) {
ListView_SetColumnWidth(hWndList, 2, 84);
} else {
ListView_SetColumnWidth(hWndList, 2, 101);
}
} }
RefreshEnabledDevicesAndDisplay(0, hWnd, 1); RefreshEnabledDevicesAndDisplay(0, hWnd, 1);
UpdatePadList(hWnd); UpdatePadList(hWnd);
@ -2219,8 +2281,38 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
SetWindowLongPtr(hWnd, DWLP_MSGRESULT, PSNRET_NOERROR); SetWindowLongPtr(hWnd, DWLP_MSGRESULT, PSNRET_NOERROR);
return 1; return 1;
} }
} else if (n->hdr.idFrom == IDC_LIST && n->hdr.code == NM_DBLCLK) { } else if (n->hdr.idFrom == IDC_DIAG_LIST) {
Diagnostics(hWnd); if (n->hdr.code == NM_DBLCLK) {
Diagnostics(hWnd);
} else if (n->hdr.code == NM_RCLICK) {
HMENU hMenu = CreatePopupMenu();
if (!hMenu)
break;
MENUITEMINFOW info;
wchar_t text[40];
info.cbSize = sizeof(info);
info.fMask = MIIM_STRING | MIIM_ID;
info.dwTypeData = text;
info.wID = 1;
wsprintfW(text, L"Test Device");
InsertMenuItemW(hMenu, 0, 1, &info);
info.wID = 2;
wsprintfW(text, L"Refresh");
InsertMenuItemW(hMenu, 1, 1, &info);
POINT pos;
GetCursorPos(&pos);
short res = TrackPopupMenuEx(hMenu, TPM_NONOTIFY | TPM_RETURNCMD, pos.x, pos.y, hWndProp, 0);
DestroyMenu(hMenu);
if (res == 0)
break;
else if (res == 1) {
Diagnostics(hWnd);
RefreshEnabledDevices();
} else if (res == 2) {
RefreshEnabledDevicesAndDisplay(1, hWnd, 1);
UpdatePadList(hWnd);
}
}
} else if (n->hdr.idFrom == IDC_PAD_LIST) { } else if (n->hdr.idFrom == IDC_PAD_LIST) {
if (n->hdr.code == LVN_ITEMCHANGED) { if (n->hdr.code == LVN_ITEMCHANGED) {
UpdatePadList(hWnd); UpdatePadList(hWnd);
@ -2243,7 +2335,7 @@ INT_PTR CALLBACK GeneralDialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, L
for (port2 = 1; port2 >= 0; port2--) { for (port2 = 1; port2 >= 0; port2--) {
for (slot2 = 3; slot2 >= 0; slot2--) { for (slot2 = 3; slot2 >= 0; slot2--) {
padtype2 = config.padConfigs[port2][slot2].type; padtype2 = config.padConfigs[port2][slot2].type;
wchar_t text[40]; wchar_t text[60];
wchar_t pad[40]; wchar_t pad[40];
if (IndividualPadtypes == 0) { if (IndividualPadtypes == 0) {
if (!GetPadString(pad, port2, slot2)) if (!GetPadString(pad, port2, slot2))

View File

@ -28,7 +28,7 @@ Device *dev;
INT_PTR CALLBACK DiagDialog(HWND hWnd, unsigned int uMsg, WPARAM wParam, LPARAM lParam) INT_PTR CALLBACK DiagDialog(HWND hWnd, unsigned int uMsg, WPARAM wParam, LPARAM lParam)
{ {
int i; int i;
HWND hWndList = GetDlgItem(hWnd, IDC_LIST); HWND hWndList = GetDlgItem(hWnd, IDC_DIAG_LIST);
static int fullRefresh; static int fullRefresh;
if (dev) { if (dev) {
switch (uMsg) { switch (uMsg) {
@ -108,7 +108,7 @@ INT_PTR CALLBACK DiagDialog(HWND hWnd, unsigned int uMsg, WPARAM wParam, LPARAM
NMLVKEYDOWN *n = (NMLVKEYDOWN *)lParam; NMLVKEYDOWN *n = (NMLVKEYDOWN *)lParam;
// Don't always get the notification when testing DirectInput non-keyboard devices. // Don't always get the notification when testing DirectInput non-keyboard devices.
// Don't get it (Or want it) when testing keyboards. // Don't get it (Or want it) when testing keyboards.
if (n->hdr.idFrom != IDC_LIST || n->hdr.code != LVN_KEYDOWN || n->wVKey != VK_ESCAPE) if (n->hdr.idFrom != IDC_DIAG_LIST || n->hdr.code != LVN_KEYDOWN || n->wVKey != VK_ESCAPE)
break; break;
} }
case WM_ACTIVATE: case WM_ACTIVATE:

View File

@ -50,14 +50,12 @@ END
// Dialog // Dialog
// //
IDD_CONFIG DIALOGEX 0, 0, 424, 318 IDD_CONFIG DIALOGEX 0, 0, 424, 283
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
FONT 8, "MS Shell Dlg", 0, 0, 0x1 FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN BEGIN
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,288,WS_EX_CLIENTEDGE CONTROL "",IDC_BINDINGS_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,271,WS_EX_CLIENTEDGE
PUSHBUTTON "Delete Selected",ID_DELETE,7,299,59,15 // Input Bindings:
PUSHBUTTON "Clear All",ID_CLEAR,71,299,56,15
PUSHBUTTON "Ignore Key",ID_IGNORE,132,299,58,15
PUSHBUTTON "Select",ID_SELECT,328,13,34,15 PUSHBUTTON "Select",ID_SELECT,328,13,34,15
PUSHBUTTON "Start",ID_START,366,13,34,15 PUSHBUTTON "Start",ID_START,366,13,34,15
PUSHBUTTON "Analog",ID_ANALOG,328,30,34,15 PUSHBUTTON "Analog",ID_ANALOG,328,30,34,15
@ -89,6 +87,17 @@ BEGIN
PUSHBUTTON "R3",ID_R3,348,149,30,15 PUSHBUTTON "R3",ID_R3,348,149,30,15
PUSHBUTTON "Right",ID_RSTICK_RIGHT,380,149,30,15 PUSHBUTTON "Right",ID_RSTICK_RIGHT,380,149,30,15
PUSHBUTTON "Down",ID_RSTICK_DOWN,348,169,30,15 PUSHBUTTON "Down",ID_RSTICK_DOWN,348,169,30,15
// Force Feedback bindings:
GROUPBOX "Add Force Feedback Effect",ID_FORCEFEEDBACK_BOX,262,195,155,51
COMBOBOX IDC_FORCEFEEDBACK,269,208,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,226,64,14
PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,226,64,14
// Special bindings and options:
PUSHBUTTON "Lock Input",ID_LOCK_ALL_INPUT,196,196,59,15
PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,214,59,15
PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,232,59,15
PUSHBUTTON "Ignore Key",ID_IGNORE,196,250,59,15
// Force Feedback configuration:
GROUPBOX "",ID_FF,195,9,222,248 GROUPBOX "",ID_FF,195,9,222,248
COMBOBOX IDC_FF_EFFECT,203,23,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_FF_EFFECT,203,23,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,43,214,17 CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,43,214,17
@ -98,7 +107,7 @@ BEGIN
CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,79,214,17 CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,79,214,17
CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,99,91,10 CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,99,91,10
CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,99,35,10 CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,99,35,10
EDITTEXT IDC_FF_AXIS2_SCALE,375,92,40,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING EDITTEXT IDC_FF_AXIS2_SCALE,375,92,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,115,214,17 CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,115,214,17
CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,135,91,10 CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,135,91,10
CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,135,35,10 CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,135,35,10
@ -115,37 +124,33 @@ BEGIN
CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,243,91,10 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 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 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,196,263,59,15 PUSHBUTTON "Back to Controls",ID_CONTROLS,196,261,59,15
PUSHBUTTON "Back to Controls",ID_CONTROLS,196,299,59,15 PUSHBUTTON "Test",ID_TEST,257,261,59,15
GROUPBOX "Configure Binding",ID_SENSITIVITY,195,189,222,70 // Input configuration:
EDITTEXT IDC_AXIS_DEVICE,202,202,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP GROUPBOX "Configure Binding",ID_SENSITIVITY,195,9,222,98
COMBOBOX IDC_AXIS_DIRECTION,276,200,70,47,CBS_DROPDOWNLIST | WS_TABSTOP EDITTEXT IDC_AXIS_DEVICE,202,22,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_AXIS_CONTROL,349,202,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP COMBOBOX IDC_AXIS_DIRECTION,276,20,70,47,CBS_DROPDOWNLIST | WS_TABSTOP
LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,218,42,8 EDITTEXT IDC_AXIS_CONTROL,349,22,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,228,34,10 LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,38,42,8
CONTROL "",IDC_SLIDER_SENSITIVITY,"msctls_trackbar32",WS_TABSTOP,240,218,131,17 CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,50,34,10
EDITTEXT IDC_AXIS_SENSITIVITY,377,216,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_SLIDER_SENSITIVITY,"msctls_trackbar32",WS_TABSTOP,240,38,131,17
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,227,27,10 EDITTEXT IDC_AXIS_SENSITIVITY,377,36,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,243,42,8 CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,50,27,10
CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,239,131,17 LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,63,42,8
EDITTEXT IDC_AXIS_DEADZONE,377,242,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,59,131,17
PUSHBUTTON "Lock Input",ID_LOCK_ALL_INPUT,196,263,59,15 EDITTEXT IDC_AXIS_DEADZONE,377,62,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,281,59,15 LTEXT "Skip Dead Zone",IDC_LABEL_SKIP_DEADZONE,202,80,42,16
PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,299,59,15 CONTROL "",IDC_SLIDER_SKIP_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,80,131,17
GROUPBOX "Add Force Feedback Effect",IDC_STATIC,262,263,155,51 EDITTEXT IDC_AXIS_SKIP_DEADZONE,377,83,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
COMBOBOX IDC_FORCEFEEDBACK,269,276,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Off",IDC_SKIP_DEADZONE_OFF,390,83,20,12
PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,294,64,14
PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,294,64,14
END END
IDD_CONFIG_POPN DIALOGEX 0, 0, 424, 318 IDD_CONFIG_POPN DIALOGEX 0, 0, 424, 283
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
FONT 8, "MS Shell Dlg", 0, 0, 0x1 FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN BEGIN
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,285,WS_EX_CLIENTEDGE CONTROL "",IDC_BINDINGS_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,271,WS_EX_CLIENTEDGE
PUSHBUTTON "Delete Selected",ID_DELETE,7,296,59,15 // Input Bindings:
PUSHBUTTON "Clear All",ID_CLEAR,71,296,56,15
PUSHBUTTON "Ignore Key",ID_IGNORE,132,296,58,15
PUSHBUTTON "Select", ID_SELECT,262,22,43,15 PUSHBUTTON "Select", ID_SELECT,262,22,43,15
PUSHBUTTON "Start", ID_START,306,22,43,15 PUSHBUTTON "Start", ID_START,306,22,43,15
PUSHBUTTON "White L",ID_TRIANGLE,196,66,43,15 PUSHBUTTON "White L",ID_TRIANGLE,196,66,43,15
@ -157,63 +162,70 @@ BEGIN
PUSHBUTTON "Green R",ID_R2,328,66,43,15 PUSHBUTTON "Green R",ID_R2,328,66,43,15
PUSHBUTTON "Yellow R",ID_DPAD_UP,350,48,43,15 PUSHBUTTON "Yellow R",ID_DPAD_UP,350,48,43,15
PUSHBUTTON "White R",ID_L2,372,66,43,15 PUSHBUTTON "White R",ID_L2,372,66,43,15
GROUPBOX "",ID_FF,195,6,222,248 // Force Feedback bindings:
COMBOBOX IDC_FF_EFFECT,203,20,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP GROUPBOX "Add Force Feedback Effect",ID_FORCEFEEDBACK_BOX,262,195,155,51
CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,40,214,17 COMBOBOX IDC_FORCEFEEDBACK,269,208,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,60,91,10 PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,226,64,14
CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,60,35,10 PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,226,64,14
EDITTEXT IDC_FF_AXIS1_SCALE,375,60,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING // Special bindings and options:
CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,76,214,17 PUSHBUTTON "Lock Input",ID_LOCK_ALL_INPUT,196,196,59,15
CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,96,91,10 PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,214,59,15
CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,96,35,10 PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,232,59,15
EDITTEXT IDC_FF_AXIS2_SCALE,375,96,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING PUSHBUTTON "Ignore Key",ID_IGNORE,196,250,59,15
CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,112,214,17 // Force Feedback configuration:
CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,132,91,10 GROUPBOX "",ID_FF,195,9,222,248
CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,132,35,10 COMBOBOX IDC_FF_EFFECT,203,23,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
EDITTEXT IDC_FF_AXIS3_SCALE,375,132,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,43,214,17
CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,148,214,17 CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,63,91,10
CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,168,91,10 CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,63,35,10
CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,168,35,10 EDITTEXT IDC_FF_AXIS1_SCALE,375,63,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_FF_AXIS4_SCALE,375,168,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,79,214,17
CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,184,214,17 CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,99,91,10
CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,204,91,10 CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,99,35,10
CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,204,35,10 EDITTEXT IDC_FF_AXIS2_SCALE,375,92,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_FF_AXIS5_SCALE,375,204,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,115,214,17
CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,220,214,17 CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,135,91,10
CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,240,91,10 CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,135,35,10
CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,240,35,10 EDITTEXT IDC_FF_AXIS3_SCALE,375,135,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_FF_AXIS6_SCALE,375,240,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,151,214,17
PUSHBUTTON "Test",ID_TEST,196,260,59,15 CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,171,91,10
PUSHBUTTON "Back to Controls",ID_CONTROLS,196,296,59,15 CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,171,35,10
GROUPBOX "Configure Binding",ID_SENSITIVITY,195,186,222,70 EDITTEXT IDC_FF_AXIS4_SCALE,375,171,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_AXIS_DEVICE,202,199,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,187,214,17
COMBOBOX IDC_AXIS_DIRECTION,276,197,70,47,CBS_DROPDOWNLIST | WS_TABSTOP CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,207,91,10
EDITTEXT IDC_AXIS_CONTROL,349,199,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,207,35,10
LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,215,42,8 EDITTEXT IDC_FF_AXIS5_SCALE,375,207,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,225,34,10 CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,223,214,17
CONTROL "",IDC_SLIDER_SENSITIVITY,"msctls_trackbar32",WS_TABSTOP,240,215,131,17 CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,243,91,10
EDITTEXT IDC_AXIS_SENSITIVITY,377,213,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,243,35,10
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,224,27,10 EDITTEXT IDC_FF_AXIS6_SCALE,375,243,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,240,42,8 PUSHBUTTON "Back to Controls",ID_CONTROLS,196,261,59,15
CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,236,131,17 PUSHBUTTON "Test",ID_TEST,257,261,59,15
EDITTEXT IDC_AXIS_DEADZONE,377,239,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING // Input configuration:
PUSHBUTTON "Lock Input",ID_LOCK_ALL_INPUT,196,260,59,15 GROUPBOX "Configure Binding",ID_SENSITIVITY,195,9,222,98
PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,278,59,15 EDITTEXT IDC_AXIS_DEVICE,202,22,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,296,59,15 COMBOBOX IDC_AXIS_DIRECTION,276,20,70,47,CBS_DROPDOWNLIST | WS_TABSTOP
GROUPBOX "Add Force Feedback Effect",IDC_STATIC,262,260,155,51 EDITTEXT IDC_AXIS_CONTROL,349,22,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
COMBOBOX IDC_FORCEFEEDBACK,269,273,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,38,42,8
PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,291,64,14 CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,50,34,10
PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,291,64,14 CONTROL "",IDC_SLIDER_SENSITIVITY,"msctls_trackbar32",WS_TABSTOP,240,38,131,17
EDITTEXT IDC_AXIS_SENSITIVITY,377,36,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,50,27,10
LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,63,42,8
CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,59,131,17
EDITTEXT IDC_AXIS_DEADZONE,377,62,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Skip Dead Zone",IDC_LABEL_SKIP_DEADZONE,202,80,42,16
CONTROL "",IDC_SLIDER_SKIP_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,80,131,17
EDITTEXT IDC_AXIS_SKIP_DEADZONE,377,83,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Off",IDC_SKIP_DEADZONE_OFF,390,83,20,12
END END
IDD_CONFIG_GUITAR DIALOGEX 0, 0, 424, 318 IDD_CONFIG_GUITAR DIALOGEX 0, 0, 424, 283
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
FONT 8, "MS Shell Dlg", 0, 0, 0x1 FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN BEGIN
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,285,WS_EX_CLIENTEDGE CONTROL "",IDC_BINDINGS_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,271,WS_EX_CLIENTEDGE
PUSHBUTTON "Delete Selected",ID_DELETE,7,296,59,15 // Input Bindings:
PUSHBUTTON "Clear All",ID_CLEAR,71,296,56,15
PUSHBUTTON "Ignore Key",ID_IGNORE,132,296,58,15
PUSHBUTTON "Fret 1",ID_R2,283,7,45,15 PUSHBUTTON "Fret 1",ID_R2,283,7,45,15
PUSHBUTTON "Fret 2",ID_CIRCLE,283,30,45,15 PUSHBUTTON "Fret 2",ID_CIRCLE,283,30,45,15
PUSHBUTTON "Fret 3",ID_TRIANGLE,283,53,45,15 PUSHBUTTON "Fret 3",ID_TRIANGLE,283,53,45,15
@ -225,63 +237,70 @@ BEGIN
PUSHBUTTON "Whammy Bar Down",ID_LSTICK_DOWN,219,164,69,15 PUSHBUTTON "Whammy Bar Down",ID_LSTICK_DOWN,219,164,69,15
PUSHBUTTON "Strum Bar Up",ID_DPAD_UP,336,146,58,15 PUSHBUTTON "Strum Bar Up",ID_DPAD_UP,336,146,58,15
PUSHBUTTON "Strum Bar Down",ID_DPAD_DOWN,336,164,58,15 PUSHBUTTON "Strum Bar Down",ID_DPAD_DOWN,336,164,58,15
GROUPBOX "",ID_FF,195,6,222,248 // Force Feedback bindings:
COMBOBOX IDC_FF_EFFECT,203,20,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP GROUPBOX "Add Force Feedback Effect",ID_FORCEFEEDBACK_BOX,262,195,155,51
CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,40,214,17 COMBOBOX IDC_FORCEFEEDBACK,269,208,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,60,91,10 PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,226,64,14
CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,60,35,10 PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,226,64,14
EDITTEXT IDC_FF_AXIS1_SCALE,375,60,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING // Special bindings and options:
CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,76,214,17 PUSHBUTTON "Lock Input",ID_LOCK_ALL_INPUT,196,196,59,15
CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,96,91,10 PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,214,59,15
CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,96,35,10 PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,232,59,15
EDITTEXT IDC_FF_AXIS2_SCALE,375,96,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING PUSHBUTTON "Ignore Key",ID_IGNORE,196,250,59,15
CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,112,214,17 // Force Feedback configuration:
CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,132,91,10 GROUPBOX "",ID_FF,195,9,222,248
CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,132,35,10 COMBOBOX IDC_FF_EFFECT,203,23,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
EDITTEXT IDC_FF_AXIS3_SCALE,375,132,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,43,214,17
CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,148,214,17 CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,63,91,10
CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,168,91,10 CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,63,35,10
CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,168,35,10 EDITTEXT IDC_FF_AXIS1_SCALE,375,63,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_FF_AXIS4_SCALE,375,168,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,79,214,17
CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,184,214,17 CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,99,91,10
CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,204,91,10 CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,99,35,10
CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,204,35,10 EDITTEXT IDC_FF_AXIS2_SCALE,375,92,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_FF_AXIS5_SCALE,375,204,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,115,214,17
CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,220,214,17 CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,135,91,10
CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,240,91,10 CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,135,35,10
CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,240,35,10 EDITTEXT IDC_FF_AXIS3_SCALE,375,135,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_FF_AXIS6_SCALE,375,240,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,151,214,17
PUSHBUTTON "Test",ID_TEST,196,260,59,15 CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,171,91,10
PUSHBUTTON "Back to Controls",ID_CONTROLS,196,296,59,15 CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,171,35,10
GROUPBOX "Configure Binding",ID_SENSITIVITY,195,186,222,70 EDITTEXT IDC_FF_AXIS4_SCALE,375,171,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_AXIS_DEVICE,202,199,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,187,214,17
COMBOBOX IDC_AXIS_DIRECTION,276,197,70,47,CBS_DROPDOWNLIST | WS_TABSTOP CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,207,91,10
EDITTEXT IDC_AXIS_CONTROL,349,199,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,207,35,10
LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,215,42,8 EDITTEXT IDC_FF_AXIS5_SCALE,375,207,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,225,34,10 CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,223,214,17
CONTROL "",IDC_SLIDER_SENSITIVITY,"msctls_trackbar32",WS_TABSTOP,240,215,131,17 CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,243,91,10
EDITTEXT IDC_AXIS_SENSITIVITY,377,213,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,243,35,10
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,224,27,10 EDITTEXT IDC_FF_AXIS6_SCALE,375,243,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,240,42,8 PUSHBUTTON "Back to Controls",ID_CONTROLS,196,261,59,15
CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,236,131,17 PUSHBUTTON "Test",ID_TEST,257,261,59,15
EDITTEXT IDC_AXIS_DEADZONE,377,239,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING // Input configuration:
PUSHBUTTON "Lock Input",ID_LOCK_ALL_INPUT,196,260,59,15 GROUPBOX "Configure Binding",ID_SENSITIVITY,195,9,222,98
PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,278,59,15 EDITTEXT IDC_AXIS_DEVICE,202,22,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,296,59,15 COMBOBOX IDC_AXIS_DIRECTION,276,20,70,47,CBS_DROPDOWNLIST | WS_TABSTOP
GROUPBOX "Add Force Feedback Effect",IDC_STATIC,262,260,155,51 EDITTEXT IDC_AXIS_CONTROL,349,22,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
COMBOBOX IDC_FORCEFEEDBACK,269,273,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,38,42,8
PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,291,64,14 CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,50,34,10
PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,291,64,14 CONTROL "",IDC_SLIDER_SENSITIVITY,"msctls_trackbar32",WS_TABSTOP,240,38,131,17
EDITTEXT IDC_AXIS_SENSITIVITY,377,36,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,50,27,10
LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,63,42,8
CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,59,131,17
EDITTEXT IDC_AXIS_DEADZONE,377,62,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Skip Dead Zone",IDC_LABEL_SKIP_DEADZONE,202,80,42,16
CONTROL "",IDC_SLIDER_SKIP_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,80,131,17
EDITTEXT IDC_AXIS_SKIP_DEADZONE,377,83,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Off",IDC_SKIP_DEADZONE_OFF,390,83,20,12
END END
IDD_CONFIG_PS1_MOUSE DIALOGEX 0, 0, 424, 318 IDD_CONFIG_PS1_MOUSE DIALOGEX 0, 0, 424, 283
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
FONT 8, "MS Shell Dlg", 0, 0, 0x1 FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN BEGIN
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,285,WS_EX_CLIENTEDGE CONTROL "",IDC_BINDINGS_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,183,285,WS_EX_CLIENTEDGE
PUSHBUTTON "Delete Selected",ID_DELETE,7,296,59,15 // Input bindings:
PUSHBUTTON "Clear All",ID_CLEAR,71,296,56,15
PUSHBUTTON "Ignore Key",ID_IGNORE,132,296,58,15
PUSHBUTTON "Mouse",ID_MOUSE,366,30,34,15 PUSHBUTTON "Mouse",ID_MOUSE,366,30,34,15
PUSHBUTTON "X-axis Left",ID_LSTICK_LEFT,256,112,45,15 PUSHBUTTON "X-axis Left",ID_LSTICK_LEFT,256,112,45,15
PUSHBUTTON "X-axis Right",ID_LSTICK_RIGHT,307,112,45,15 PUSHBUTTON "X-axis Right",ID_LSTICK_RIGHT,307,112,45,15
@ -289,56 +308,65 @@ BEGIN
PUSHBUTTON "Y-axis Down",ID_LSTICK_DOWN,283,132,45,15 PUSHBUTTON "Y-axis Down",ID_LSTICK_DOWN,283,132,45,15
PUSHBUTTON "Left-click",ID_CIRCLE,256,56,45,15 PUSHBUTTON "Left-click",ID_CIRCLE,256,56,45,15
PUSHBUTTON "Right-click",ID_CROSS,307,56,45,15 PUSHBUTTON "Right-click",ID_CROSS,307,56,45,15
GROUPBOX "",ID_FF,195,6,222,248 // Force Feedback bindings:
COMBOBOX IDC_FF_EFFECT,203,20,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP GROUPBOX "Add Force Feedback Effect",ID_FORCEFEEDBACK_BOX,262,195,155,51
CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,40,214,17 COMBOBOX IDC_FORCEFEEDBACK,269,208,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,60,91,10 PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,226,64,14
CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,60,35,10 PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,226,64,14
EDITTEXT IDC_FF_AXIS1_SCALE,375,60,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING // Special bindings and options:
CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,76,214,17 PUSHBUTTON "Lock Input",ID_LOCK_ALL_INPUT,196,196,59,15
CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,96,91,10 PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,214,59,15
CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,96,35,10 PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,232,59,15
EDITTEXT IDC_FF_AXIS2_SCALE,375,96,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING PUSHBUTTON "Ignore Key",ID_IGNORE,196,250,59,15
CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,112,214,17 // Force Feedback configuration:
CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,132,91,10 GROUPBOX "",ID_FF,195,9,222,248
CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,132,35,10 COMBOBOX IDC_FF_EFFECT,203,23,206,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
EDITTEXT IDC_FF_AXIS3_SCALE,375,132,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS1,"msctls_trackbar32",WS_TABSTOP,199,43,214,17
CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,148,214,17 CONTROL "Axis 1",IDC_FF_AXIS1_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,63,91,10
CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,168,91,10 CONTROL "Flip",IDC_FF_AXIS1_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,63,35,10
CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,168,35,10 EDITTEXT IDC_FF_AXIS1_SCALE,375,63,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_FF_AXIS4_SCALE,375,168,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS2,"msctls_trackbar32",WS_TABSTOP,199,79,214,17
CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,184,214,17 CONTROL "Axis 2",IDC_FF_AXIS2_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,99,91,10
CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,204,91,10 CONTROL "Flip",IDC_FF_AXIS2_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,99,35,10
CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,204,35,10 EDITTEXT IDC_FF_AXIS2_SCALE,375,92,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_FF_AXIS5_SCALE,375,204,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS3,"msctls_trackbar32",WS_TABSTOP,199,115,214,17
CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,220,214,17 CONTROL "Axis 3",IDC_FF_AXIS3_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,135,91,10
CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,240,91,10 CONTROL "Flip",IDC_FF_AXIS3_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,135,35,10
CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,240,35,10 EDITTEXT IDC_FF_AXIS3_SCALE,375,135,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_FF_AXIS6_SCALE,375,240,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "",IDC_FF_AXIS4,"msctls_trackbar32",WS_TABSTOP,199,151,214,17
PUSHBUTTON "Test",ID_TEST,196,260,59,15 CONTROL "Axis 4",IDC_FF_AXIS4_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,171,91,10
PUSHBUTTON "Back to Controls",ID_CONTROLS,196,296,59,15 CONTROL "Flip",IDC_FF_AXIS4_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,171,35,10
GROUPBOX "Configure Binding",ID_SENSITIVITY,195,186,222,70 EDITTEXT IDC_FF_AXIS4_SCALE,375,171,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
EDITTEXT IDC_AXIS_DEVICE,202,199,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP CONTROL "",IDC_FF_AXIS5,"msctls_trackbar32",WS_TABSTOP,199,187,214,17
COMBOBOX IDC_AXIS_DIRECTION,276,197,70,47,CBS_DROPDOWNLIST | WS_TABSTOP CONTROL "Axis 5",IDC_FF_AXIS5_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,207,91,10
EDITTEXT IDC_AXIS_CONTROL,349,199,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP CONTROL "Flip",IDC_FF_AXIS5_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,207,35,10
LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,215,42,8 EDITTEXT IDC_FF_AXIS5_SCALE,375,207,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,225,34,10 CONTROL "",IDC_FF_AXIS6,"msctls_trackbar32",WS_TABSTOP,199,223,214,17
CONTROL "",IDC_SLIDER_SENSITIVITY,"msctls_trackbar32",WS_TABSTOP,240,215,131,17 CONTROL "Axis 6",IDC_FF_AXIS6_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,205,243,91,10
EDITTEXT IDC_AXIS_SENSITIVITY,377,213,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING CONTROL "Flip",IDC_FF_AXIS6_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,302,243,35,10
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,224,27,10 EDITTEXT IDC_FF_AXIS6_SCALE,375,243,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,240,42,8 PUSHBUTTON "Back to Controls",ID_CONTROLS,196,261,59,15
CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,236,131,17 PUSHBUTTON "Test",ID_TEST,257,261,59,15
EDITTEXT IDC_AXIS_DEADZONE,377,239,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING // Input configuration:
PUSHBUTTON "Lock Input",ID_LOCK_ALL_INPUT,196,260,59,15 GROUPBOX "Configure Binding",ID_SENSITIVITY,195,9,222,98
PUSHBUTTON "Lock Direction",ID_LOCK_DIRECTION,196,278,59,15 EDITTEXT IDC_AXIS_DEVICE,202,22,74,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
PUSHBUTTON "Lock Buttons",ID_LOCK_BUTTONS,196,296,59,15 COMBOBOX IDC_AXIS_DIRECTION,276,20,70,47,CBS_DROPDOWNLIST | WS_TABSTOP
GROUPBOX "Add Force Feedback Effect",IDC_STATIC,262,260,155,51 EDITTEXT IDC_AXIS_CONTROL,349,22,65,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
COMBOBOX IDC_FORCEFEEDBACK,269,273,142,106,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Sensitivity",IDC_LABEL_SENSITIVITY,202,38,42,8
PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,291,64,14 CONTROL "Turbo",IDC_TURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,50,34,10
PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,291,64,14 CONTROL "",IDC_SLIDER_SENSITIVITY,"msctls_trackbar32",WS_TABSTOP,240,38,131,17
EDITTEXT IDC_AXIS_SENSITIVITY,377,36,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
CONTROL "Flip",IDC_FLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,385,50,27,10
LTEXT "Dead Zone",IDC_LABEL_DEADZONE,202,63,42,8
CONTROL "",IDC_SLIDER_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,59,131,17
EDITTEXT IDC_AXIS_DEADZONE,377,62,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Skip Dead Zone",IDC_LABEL_SKIP_DEADZONE,202,80,42,16
CONTROL "",IDC_SLIDER_SKIP_DEADZONE,"msctls_trackbar32",WS_TABSTOP,240,80,131,17
EDITTEXT IDC_AXIS_SKIP_DEADZONE,377,83,33,12,ES_RIGHT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_RTLREADING
LTEXT "Off",IDC_SKIP_DEADZONE_OFF,390,83,20,12
END END
IDD_GENERAL DIALOGEX 0, 0, 424, 327 IDD_GENERAL DIALOGEX 0, 0, 424, 283
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
FONT 8, "MS Shell Dlg", 0, 0, 0x1 FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN BEGIN
@ -353,40 +381,37 @@ BEGIN
CONTROL "DualShock 3 native mode (Requires libusb)",IDC_G_DS3, CONTROL "DualShock 3 native mode (Requires libusb)",IDC_G_DS3,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,106,151,10 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,106,151,10
CONTROL "Monitor when in background",IDC_BACKGROUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,118,106,10 CONTROL "Monitor when in background",IDC_BACKGROUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,118,106,10
GROUPBOX "Mouse API",IDC_STATIC,216,16,192,86 GROUPBOX "Mouse API",IDC_STATIC,216,16,192,74
CONTROL "Windows messaging (Recommended)",IDC_M_WM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,223,27,134,10 CONTROL "Windows messaging (Recommended)",IDC_M_WM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,223,27,134,10
CONTROL "Raw input (XP and later only)",IDC_M_RAW,"Button",BS_AUTORADIOBUTTON,223,39,112,10 CONTROL "Raw input (XP and later only)",IDC_M_RAW,"Button",BS_AUTORADIOBUTTON,223,39,112,10
CONTROL "DirectInput",IDC_M_DI,"Button",BS_AUTORADIOBUTTON,223,51,112,10 CONTROL "DirectInput",IDC_M_DI,"Button",BS_AUTORADIOBUTTON,223,51,112,10
CONTROL "Disable",IDC_M_DISABLE,"Button",BS_AUTORADIOBUTTON,223,63,39,10 CONTROL "Disable",IDC_M_DISABLE,"Button",BS_AUTORADIOBUTTON,223,63,39,10
CONTROL "Start without mouse focus",IDC_MOUSE_UNFOCUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,75,97,10 CONTROL "Start without mouse focus",IDC_MOUSE_UNFOCUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,75,97,10
CONTROL "Always hide cursor",IDC_FORCE_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,87,71,10 CONTROL "Always hide cursor",IDC_FORCE_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,323,75,71,10
GROUPBOX "Advanced",IDC_STATIC,215,105,192,27 GROUPBOX "Advanced",IDC_STATIC,215,93,192,37
CONTROL "Allow binding multiple PS2 controls to one PC control",IDC_MULTIPLE_BINDING, CONTROL "Allow binding multiple PS2 controls to one PC control",IDC_MULTIPLE_BINDING,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,117,182,10 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,221,102,182,10
GROUPBOX "Pads",IDC_STATIC,7,145,410,69 CONTROL "Disable screensaver",IDC_DISABLE_SCREENSAVER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,286,115,80,10
CONTROL "Port 1 Multitap",IDC_MULTITAP1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,157,63,10 CONTROL "Enable logging",IDC_DEBUG_FILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,221,115,62,10
CONTROL "Port 2 Multitap",IDC_MULTITAP2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,169,63,10 GROUPBOX "Pads",IDC_STATIC,7,142,410,62
CONTROL "",IDC_PAD_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_TABSTOP,81,156,183,52,WS_EX_CLIENTEDGE CONTROL "Port 1 Multitap",IDC_MULTITAP1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,152,63,10
COMBOBOX IDC_PAD_TYPE,270,155,140,41,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Port 2 Multitap",IDC_MULTITAP2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,164,63,10
CONTROL "",IDC_PAD_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_TABSTOP,81,151,183,48,WS_EX_CLIENTEDGE
COMBOBOX IDC_PAD_TYPE,270,151,140,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Use analog mode if possible - PS1 only",IDC_ANALOG_START1, CONTROL "Use analog mode if possible - PS1 only",IDC_ANALOG_START1,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,270,172,132,10 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,270,168,137,10
GROUPBOX "Device Diagnostics",IDC_STATIC,7,219,201,101 GROUPBOX "Device Diagnostics",IDC_STATIC,7,207,201,72
CONTROL "",IDC_LIST,"SysListView32",LVS_LIST | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,14,231,187,65,WS_EX_CLIENTEDGE CONTROL "",IDC_DIAG_LIST,"SysListView32",LVS_LIST | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,14,217,187,57,WS_EX_CLIENTEDGE
PUSHBUTTON "Test Device",ID_TEST,87,300,57,15 GROUPBOX "Hacks",IDC_STATIC,216,207,201,46
PUSHBUTTON "Refresh",ID_REFRESH,153,300,48,15 CONTROL "Send escape on window close",IDC_CLOSE_HACK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,217,113,10
GROUPBOX "Miscellaneous",IDC_STATIC,216,219,201,35 CONTROL "Exit emulator on window close",IDC_CLOSE_HACK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,228,112,10
CONTROL "Disable screensaver",IDC_DISABLE_SCREENSAVER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,221,230,80,10
CONTROL "Enable logging",IDC_DEBUG_FILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,230,62,10
GROUPBOX "Hacks",IDC_STATIC,216,256,201,46
CONTROL "Send escape on window close",IDC_CLOSE_HACK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,266,113,10
CONTROL "Exit emulator on window close",IDC_CLOSE_HACK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,277,112,10
CONTROL "Safe fullscreen exit on escape",IDC_ESCAPE_FULLSCREEN_HACK, CONTROL "Safe fullscreen exit on escape",IDC_ESCAPE_FULLSCREEN_HACK,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,288,112,10 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,239,112,10
CONTROL "Save state # in title",IDC_SAVE_STATE_TITLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,266,79,10 CONTROL "Save state # in title",IDC_SAVE_STATE_TITLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,217,79,10
CONTROL "Guitar Hero 2 Hack",IDC_GH2_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,277,76,10 CONTROL "Guitar Hero 2 Hack",IDC_GH2_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,228,76,10
PUSHBUTTON "Load Bindings",ID_LOAD,283,305,62,15 CONTROL "L3 Toggles Turbo",IDC_TURBO_KEY_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,239,70,10
PUSHBUTTON "Save Bindings",ID_SAVE,355,305,62,15 PUSHBUTTON "Load Bindings",ID_LOAD,283,259,62,15
CONTROL "L3 Toggles Turbo",IDC_TURBO_KEY_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,288,66,10 PUSHBUTTON "Save Bindings",ID_SAVE,355,259,62,15
END END
IDD_ABOUT DIALOGEX 0, 0, 108, 66 IDD_ABOUT DIALOGEX 0, 0, 108, 66
@ -404,7 +429,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM
CAPTION " " CAPTION " "
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,176,164,WS_EX_CLIENTEDGE CONTROL "",IDC_DIAG_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,176,164,WS_EX_CLIENTEDGE
END END

View File

@ -57,10 +57,18 @@ LPWSTR dialog_message(int ID, bool *updateText)
L"This removes the need for manually enabling analog mode with a press of the analog button for games that support, but do not automatically enable analog mode.\n\n" L"This removes the need for manually enabling analog mode with a press of the analog button for games that support, but do not automatically enable analog mode.\n\n"
L"Note 1: 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" L"Note 1: 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"
L"Note 2: If analog mode is enabled in a game that does not support it, a game might not recognise a controller is connected."; L"Note 2: If analog mode is enabled in a game that does not support it, a game might not recognise a controller is connected.";
case ID_TEST: case IDC_DIAG_LIST:
return L"Displays a continuously updated list of the state of all objects on the selected device.\n\n" return L"Shows a list of currently available input devices.\n\n"
L"Use this option to check if all the inputs on a controller function properly."; L"Double-click a device in the list or right-click it and select \"Test Device\" to display a continuously updated list of the state of all inputs on the selected device.\n"
L"Use this option to check if all the inputs on a controller function properly.\n\n"
L"Right-click and select \"Refresh\" to update the list of devices in case a recently connected device has not shown up yet.";
// Pad tabs // Pad tabs
case IDC_BINDINGS_LIST:
return L"Shows a list of currently bound inputs of the selected Pad.\n\n"
L"Left-click on one of the bindings in the list to configure it.\n\n"
L"Right-click and select \"Delete Selected\" to remove the selected input from the list.\n\n"
L"Right-click and select \"Clear All\" to remove all the inputs from the list.\n\n"
L"Note: Use Shift/Ctrl + Left-click to select multiple bindings. Changing the displayed configuration will now copy it to all selected bindings.";
case ID_MOUSE: case ID_MOUSE:
return L"Bind a key that releases or captures the mouse.\n\n" return L"Bind a key that releases or captures the mouse.\n\n"
L"Pressing the assigned button when the mouse is in focus, it releases the mouse from use in-game and makes the cursor visible so it can move/resize the emulator window.\n\n" L"Pressing the assigned button when the mouse is in focus, it releases the mouse from use in-game and makes the cursor visible so it can move/resize the emulator window.\n\n"
@ -93,7 +101,7 @@ LPWSTR dialog_message(int ID, bool *updateText)
case IDC_SLIDER_DEADZONE: case IDC_SLIDER_DEADZONE:
return L"Decreases or increases the range of an input where no input is recognised.\n\n" return L"Decreases or increases the range of an input where no input is recognised.\n\n"
L"Increasing the dead zone requires the input to be pressed harder or moved more before it is applied, decreasing it makes it recognise a softer press or a shorter movement."; L"Increasing the dead zone requires the input to be pressed harder or moved more before it is applied, decreasing it makes it recognise a softer press or a shorter movement.";
case IDC_SKIP_DEADZONE: case IDC_SLIDER_SKIP_DEADZONE:
return L"Skips and avoids the dead zone to detect input earlier.\n\n" return L"Skips and avoids the dead zone to detect input earlier.\n\n"
L"Note: This is useful when a controller input requires too much movement/pressure before there's a corresponding action in-game."; L"Note: This is useful when a controller input requires too much movement/pressure before there's a corresponding action in-game.";
case IDC_SLIDER_SENSITIVITY: case IDC_SLIDER_SENSITIVITY:

View File

@ -45,6 +45,7 @@
#define IDC_PAD_LIST 1130 #define IDC_PAD_LIST 1130
#define IDC_COMBO1 1131 #define IDC_COMBO1 1131
#define IDC_PAD_TYPE 1132 #define IDC_PAD_TYPE 1132
#define IDC_DIAG_LIST 1133
#define IDC_SLIDER_SENSITIVITY 0x1000 #define IDC_SLIDER_SENSITIVITY 0x1000
#define IDC_FLIP 0x1001 #define IDC_FLIP 0x1001
#define IDC_AXIS_DIRECTION 0x1002 #define IDC_AXIS_DIRECTION 0x1002
@ -53,16 +54,19 @@
#define IDC_TURBO 0x1005 #define IDC_TURBO 0x1005
#define IDC_AXIS_DEVICE 0x1006 #define IDC_AXIS_DEVICE 0x1006
#define ID_SENSITIVITY 0x1007 #define ID_SENSITIVITY 0x1007
#define IDC_DPAD 0x1008 #define IDC_SLIDER_DEADZONE 0x1008
#define IDC_LSTICK 0x1009 #define IDC_AXIS_DEADZONE 0x1009
#define IDC_RSTICK 0x100A #define IDC_LABEL_SENSITIVITY 0x100A
#define IDC_FACE 0x100B #define IDC_LABEL_DEADZONE 0x100B
#define IDC_SHOULDER 0x100C #define IDC_LABEL_SKIP_DEADZONE 0x100C
#define IDC_SLIDER_DEADZONE 0x1010 #define IDC_SKIP_DEADZONE_OFF 0x100D
#define IDC_AXIS_DEADZONE 0x1014 #define IDC_SLIDER_SKIP_DEADZONE 0x100E
#define IDC_LABEL_SENSITIVITY 0x1020 #define IDC_AXIS_SKIP_DEADZONE 0x100F
#define IDC_LABEL_DEADZONE 0x1021 #define IDC_DPAD 0x10F7
#define IDC_SKIP_DEADZONE 0x1022 #define IDC_LSTICK 0x10F8
#define IDC_RSTICK 0x10F9
#define IDC_FACE 0x10FA
#define IDC_SHOULDER 0x10FB
#define ID_LOCK_BUTTONS 0x10FC #define ID_LOCK_BUTTONS 0x10FC
#define ID_LOCK_ALL_INPUT 0x10FD #define ID_LOCK_ALL_INPUT 0x10FD
#define ID_LOCK_DIRECTION 0x10FE #define ID_LOCK_DIRECTION 0x10FE
@ -92,18 +96,15 @@
#define ID_RSTICK_DOWN 0x1116 #define ID_RSTICK_DOWN 0x1116
#define ID_RSTICK_LEFT 0x1117 #define ID_RSTICK_LEFT 0x1117
#define ID_ANALOG 0x1118 #define ID_ANALOG 0x1118
#define ID_DELETE 0x11FF #define ID_IGNORE 0x1119
#define ID_DEBUG 0x1200 #define IDC_FORCEFEEDBACK 0x111A
#define ID_IGNORE 0x1201 #define IDC_FORCEFEEDBACK_FUNCTION 0x111B
#define ID_CLEAR 0x1202 #define ID_BIG_MOTOR 0x111C
#define ID_REFRESH 0x1202 #define ID_SMALL_MOTOR 0x111D
#define ID_SAVE 0x1204 #define ID_FORCEFEEDBACK_BOX 0x111E
#define ID_LOAD 0x1205 #define IDC_BINDINGS_LIST 0x1200
#define IDC_LIST 0x1207 #define ID_SAVE 0x1201
#define IDC_FORCEFEEDBACK 0x1208 #define ID_LOAD 0x1202
#define IDC_FORCEFEEDBACK_FUNCTION 0x1209
#define ID_BIG_MOTOR 0x120A
#define ID_SMALL_MOTOR 0x120B
#define ID_TEST 0x1300 #define ID_TEST 0x1300
#define ID_CONTROLS 0x1301 #define ID_CONTROLS 0x1301
#define IDC_FF_DEVICE 0x1302 #define IDC_FF_DEVICE 0x1302