diff --git a/plugins/LilyPad/Config.cpp b/plugins/LilyPad/Config.cpp index 3e82121e31..d5379c215f 100644 --- a/plugins/LilyPad/Config.cpp +++ b/plugins/LilyPad/Config.cpp @@ -396,6 +396,10 @@ void SelChanged(int port, int slot) int ffbFound = 0; ForceFeedbackBinding *ffb = 0; Binding *b = 0; + if (config.bind && !config.configureOnBind) { + i = 0; + config.bind = false; + } if (i >= 1) { int index = -1; int flipped = 0; @@ -492,7 +496,7 @@ void SelChanged(int port, int slot) } } - for (i = IDC_DPAD; i < ID_FORCEFEEDBACK_BOX; i++) { + for (i = IDC_DPAD; i < IDC_CONFIGURE_ON_BIND; i++) { hWndTemp = GetDlgItem(hWnd, i); if (hWndTemp) ShowWindow(hWndTemp, !ffb && !b); @@ -870,6 +874,8 @@ int SaveSettings(wchar_t *file = 0) WritePrivateProfileInt(L"General Settings", L"Keyboard Mode", config.keyboardApi, file); WritePrivateProfileInt(L"General Settings", L"Mouse Mode", config.mouseApi, file); + WritePrivateProfileInt(L"Pad Settings", L"Configure On Bind", config.configureOnBind, file); + for (int port = 0; port < 2; port++) { for (int slot = 0; slot < 4; slot++) { wchar_t temp[50]; @@ -982,6 +988,8 @@ int LoadSettings(int force, wchar_t *file) config.keyboardApi = WM; config.mouseApi = (DeviceAPI)GetPrivateProfileIntW(L"General Settings", L"Mouse Mode", 0, file); + config.configureOnBind = (DeviceAPI)GetPrivateProfileIntW(L"Pad Settings", L"Configure On Bind", 0, file); + if (config.debug) { CreateDirectory(L"logs", 0); } @@ -1535,8 +1543,10 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l SetupLogSlider(GetDlgItem(hWnd, IDC_SLIDER_SKIP_DEADZONE)); if (port || slot) EnableWindow(GetDlgItem(hWnd, ID_IGNORE), 0); + CheckDlgButton(hWnd, IDC_CONFIGURE_ON_BIND, BST_CHECKED * config.configureOnBind); AddTooltip(IDC_BINDINGS_LIST, hWnd); + AddTooltip(IDC_CONFIGURE_ON_BIND, hWnd); AddTooltip(ID_MOUSE, hWnd); AddTooltip(ID_ANALOG, hWnd); AddTooltip(ID_IGNORE, hWnd); @@ -1549,6 +1559,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l AddTooltip(IDC_SLIDER_SKIP_DEADZONE, hWnd); AddTooltip(IDC_SLIDER_SENSITIVITY, hWnd); + config.bind = false; Populate(port, slot, padtype); } break; case WM_DEVICECHANGE: @@ -1595,6 +1606,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l PropSheet_Changed(hWndProp, hWnds[port][slot][padtype]); ListView_SetItemState(hWndList, index, LVIS_SELECTED, LVIS_SELECTED); ListView_EnsureVisible(hWndList, index, 0); + config.bind = true; } } } @@ -1841,6 +1853,8 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l dm->Update(&info); dm->PostRead(); SetTimer(hWnd, 1, 30, 0); + } else if (cmd == IDC_CONFIGURE_ON_BIND) { + config.configureOnBind = IsDlgButtonChecked(hWnd, IDC_CONFIGURE_ON_BIND); } if (cmd == IDC_TURBO) { // Don't allow setting it back to indeterminate. diff --git a/plugins/LilyPad/Config.h b/plugins/LilyPad/Config.h index d6d34881f3..8e329e5e0e 100644 --- a/plugins/LilyPad/Config.h +++ b/plugins/LilyPad/Config.h @@ -40,6 +40,8 @@ public: // Derived value, calculated by GetInput(). u8 ignoreKeys; + u8 configureOnBind; + bool bind; union { diff --git a/plugins/LilyPad/Default.ini b/plugins/LilyPad/Default.ini index 2ea5b523ea..bcbd379c99 100644 --- a/plugins/LilyPad/Default.ini +++ b/plugins/LilyPad/Default.ini @@ -19,6 +19,8 @@ Turbo Key Hack=0 Close Hacks=0 Keyboard Mode=2 Mouse Mode=0 +[Pad Settings] +Configure On Bind=0 [Pad 0 0] Mode=1 Auto Analog=0 diff --git a/plugins/LilyPad/LilyPad.rc b/plugins/LilyPad/LilyPad.rc index ca8dba28ea..d9080f8fb3 100644 --- a/plugins/LilyPad/LilyPad.rc +++ b/plugins/LilyPad/LilyPad.rc @@ -93,6 +93,7 @@ BEGIN PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,226,64,14 PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,226,64,14 // Special bindings and options: + CONTROL "Configure on bind",IDC_CONFIGURE_ON_BIND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,335,250,70,15 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 @@ -168,6 +169,7 @@ BEGIN PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,226,64,14 PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,226,64,14 // Special bindings and options: + CONTROL "Configure on bind",IDC_CONFIGURE_ON_BIND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,335,250,70,15 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 @@ -243,6 +245,7 @@ BEGIN PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,226,64,14 PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,226,64,14 // Special bindings and options: + CONTROL "Configure on bind",IDC_CONFIGURE_ON_BIND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,335,250,70,15 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 @@ -314,6 +317,7 @@ BEGIN PUSHBUTTON "Big Motor",ID_BIG_MOTOR,269,226,64,14 PUSHBUTTON "Small Motor",ID_SMALL_MOTOR,347,226,64,14 // Special bindings and options: + CONTROL "Configure on bind",IDC_CONFIGURE_ON_BIND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,335,250,70,15 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 diff --git a/plugins/LilyPad/Tooltips.cpp b/plugins/LilyPad/Tooltips.cpp index 97e58b2519..d1d9932132 100644 --- a/plugins/LilyPad/Tooltips.cpp +++ b/plugins/LilyPad/Tooltips.cpp @@ -69,6 +69,8 @@ LPWSTR dialog_message(int ID, bool *updateText) 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 IDC_CONFIGURE_ON_BIND: + return L"Immediately go to the configuration setup when you create a new binding."; case ID_MOUSE: 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" diff --git a/plugins/LilyPad/resource.h b/plugins/LilyPad/resource.h index 05ee2a8187..2d39d9c25d 100644 --- a/plugins/LilyPad/resource.h +++ b/plugins/LilyPad/resource.h @@ -102,6 +102,7 @@ #define ID_BIG_MOTOR 0x111C #define ID_SMALL_MOTOR 0x111D #define ID_FORCEFEEDBACK_BOX 0x111E +#define IDC_CONFIGURE_ON_BIND 0x111F #define IDC_BINDINGS_LIST 0x1200 #define ID_SAVE 0x1201 #define ID_LOAD 0x1202