mirror of https://github.com/PCSX2/pcsx2.git
Fixed a pair of bugs with flipped controls and sensitivity > 1. "Ignore keyboard" removed from device list. Removed some unnecessary mouse capture code for mouse raw input. Renamed some options to be more user friendly.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@515 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
68ceb3b8fb
commit
87a230f550
|
@ -148,7 +148,7 @@ void RefreshEnabledDevicesAndDisplay(int updateDeviceList = 0, HWND hWnd = 0, in
|
||||||
item.iSubItem = 0;
|
item.iSubItem = 0;
|
||||||
item.mask = LVIF_TEXT | LVIF_PARAM;
|
item.mask = LVIF_TEXT | LVIF_PARAM;
|
||||||
for (int j=0; j<dm->numDevices; j++) {
|
for (int j=0; j<dm->numDevices; j++) {
|
||||||
if (dm->devices[j]->enabled) {
|
if (dm->devices[j]->enabled && dm->devices[j]->api != IGNORE_KEYBOARD) {
|
||||||
item.lParam = j;
|
item.lParam = j;
|
||||||
item.pszText = dm->devices[j]->displayName;
|
item.pszText = dm->devices[j]->displayName;
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
|
|
|
@ -152,7 +152,7 @@ public:
|
||||||
|
|
||||||
int Activate(void *d) {
|
int Activate(void *d) {
|
||||||
int i, j;
|
int i, j;
|
||||||
if (active) Deactivate();
|
Deactivate();
|
||||||
InitInfo *info = (InitInfo*)d;
|
InitInfo *info = (InitInfo*)d;
|
||||||
// Note: Have to use hWndTop to properly hide cursor for mouse device.
|
// Note: Have to use hWndTop to properly hide cursor for mouse device.
|
||||||
if (type == OTHER) {
|
if (type == OTHER) {
|
||||||
|
|
|
@ -183,16 +183,8 @@ void Device::CalcVirtualState() {
|
||||||
double angle = val * (3.141592653589793/18000.0);
|
double angle = val * (3.141592653589793/18000.0);
|
||||||
double East = sin(angle);
|
double East = sin(angle);
|
||||||
double South = -cos(angle);
|
double South = -cos(angle);
|
||||||
double fabsSouth = fabs(South);
|
|
||||||
double fabsEast = fabs(East);
|
|
||||||
// Normalize so greatest direction is 1.
|
// Normalize so greatest direction is 1.
|
||||||
double mul;
|
double mul = FULLY_DOWN / max(fabs(South), fabs(East));
|
||||||
if (fabsSouth > fabsEast) {
|
|
||||||
mul = FULLY_DOWN / fabsSouth;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
mul = FULLY_DOWN / fabsEast;
|
|
||||||
}
|
|
||||||
iEast = (int) floor(East * mul + 0.5);
|
iEast = (int) floor(East * mul + 0.5);
|
||||||
iSouth = (int) floor(South * mul + 0.5);
|
iSouth = (int) floor(South * mul + 0.5);
|
||||||
}
|
}
|
||||||
|
@ -300,10 +292,10 @@ wchar_t *Device::GetVirtualControlName(VirtualControl *control) {
|
||||||
uid &= 0xFF000000;
|
uid &= 0xFF000000;
|
||||||
int len = (int)wcslen(baseName);
|
int len = (int)wcslen(baseName);
|
||||||
if (len > 99) len = 99;
|
if (len > 99) len = 99;
|
||||||
if (uid && len > 89) len = 89;
|
|
||||||
memcpy(temp, baseName, len*sizeof(wchar_t));
|
memcpy(temp, baseName, len*sizeof(wchar_t));
|
||||||
temp[len] = 0;
|
temp[len] = 0;
|
||||||
if (uid) {
|
if (uid) {
|
||||||
|
if (len > 95) len = 95;
|
||||||
wchar_t *out = temp+len;
|
wchar_t *out = temp+len;
|
||||||
if (uid == UID_AXIS_POS) {
|
if (uid == UID_AXIS_POS) {
|
||||||
wcscpy(out, L" +");
|
wcscpy(out, L" +");
|
||||||
|
|
|
@ -31,8 +31,6 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
int Update() {
|
int Update() {
|
||||||
//if (!GetKeyboardState(buttonState)) return 0;
|
|
||||||
for (int i=0; i<=4; i++) virtualControlState[i] = 0;
|
|
||||||
// So I'll bind to left/right control/shift instead of generic ones.
|
// So I'll bind to left/right control/shift instead of generic ones.
|
||||||
virtualControlState[VK_SHIFT] = 0;
|
virtualControlState[VK_SHIFT] = 0;
|
||||||
virtualControlState[VK_CONTROL] = 0;
|
virtualControlState[VK_CONTROL] = 0;
|
||||||
|
|
|
@ -166,17 +166,20 @@ void UpdateEnabledDevices(int updateList = 0) {
|
||||||
if (dev->type == KEYBOARD) {
|
if (dev->type == KEYBOARD) {
|
||||||
if (!activeWindow) dm->DisableDevice(i);
|
if (!activeWindow) dm->DisableDevice(i);
|
||||||
}
|
}
|
||||||
// Keep for cursor hiding consistency.
|
// Keep for cursor hiding consistency, unless unfocused.
|
||||||
|
// miceEnabled tracks state of mouse enable/disable button, not if mouse API is set to disabled.
|
||||||
else if (dev->type == MOUSE) {
|
else if (dev->type == MOUSE) {
|
||||||
if (!miceEnabled || !activeWindow) dm->DisableDevice(i);
|
if (!miceEnabled || !activeWindow) dm->DisableDevice(i);
|
||||||
}
|
}
|
||||||
else if (!activeWindow && !config.background) dm->DisableDevice(i);
|
else if (!activeWindow && !config.background) dm->DisableDevice(i);
|
||||||
else {
|
else {
|
||||||
int needDevice = 0;
|
int numActiveBindings = 0;
|
||||||
for (int pad=0; pad<2; pad++) {
|
for (int pad=0; pad<2; pad++) {
|
||||||
needDevice |= (padsEnabled[pad] && dev->pads[pad].numBindings+dev->pads[pad].numFFBindings);
|
if (padsEnabled[pad]) {
|
||||||
|
numActiveBindings += dev->pads[pad].numBindings + dev->pads[pad].numFFBindings;
|
||||||
}
|
}
|
||||||
if (!needDevice)
|
}
|
||||||
|
if (!numActiveBindings)
|
||||||
dm->DisableDevice(i);
|
dm->DisableDevice(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,7 +193,6 @@ BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, void* lpvReserved) {
|
||||||
}
|
}
|
||||||
else if (fdwReason == DLL_PROCESS_DETACH) {
|
else if (fdwReason == DLL_PROCESS_DETACH) {
|
||||||
DeleteCriticalSection(&readInputCriticalSection);
|
DeleteCriticalSection(&readInputCriticalSection);
|
||||||
activeWindow = 0;
|
|
||||||
while (openCount)
|
while (openCount)
|
||||||
PADclose();
|
PADclose();
|
||||||
PADshutdown();
|
PADshutdown();
|
||||||
|
@ -224,7 +226,7 @@ void AddForce(ButtonSum *sum, u8 cmd, int delta = 255) {
|
||||||
else if (cmd < 0x20) {
|
else if (cmd < 0x20) {
|
||||||
sum->buttons[cmd-0x10-4] += delta;
|
sum->buttons[cmd-0x10-4] += delta;
|
||||||
}
|
}
|
||||||
else if (cmd < 0x24) {
|
else if (cmd < 0x28) {
|
||||||
if (cmd == 32) {
|
if (cmd == 32) {
|
||||||
sum->sticks[2].vert -= delta;
|
sum->sticks[2].vert -= delta;
|
||||||
}
|
}
|
||||||
|
@ -254,13 +256,13 @@ void AddForce(ButtonSum *sum, u8 cmd, int delta = 255) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessButtonBinding(Binding *b, ButtonSum *sum, unsigned int value) {
|
void ProcessButtonBinding(Binding *b, ButtonSum *sum, int value) {
|
||||||
int sensitivity = b->sensitivity;
|
int sensitivity = b->sensitivity;
|
||||||
if (sensitivity < 0) {
|
if (sensitivity < 0) {
|
||||||
sensitivity = -sensitivity;
|
sensitivity = -sensitivity;
|
||||||
value = (1<<16)-value;
|
value = (1<<16)-value;
|
||||||
}
|
}
|
||||||
if (value) {
|
if (value > 0) {
|
||||||
AddForce(sum, b->command, (int)((((sensitivity*(255*(__int64)value)) + BASE_SENSITIVITY/2)/BASE_SENSITIVITY + FULLY_DOWN/2)/FULLY_DOWN));
|
AddForce(sum, b->command, (int)((((sensitivity*(255*(__int64)value)) + BASE_SENSITIVITY/2)/BASE_SENSITIVITY + FULLY_DOWN/2)/FULLY_DOWN));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -302,8 +304,8 @@ void CALLBACK PADupdate(int pad) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update(int pad) {
|
void Update(int pad) {
|
||||||
if ((unsigned int)pad > 2 /* || safeShutdown//*/) return;
|
if ((unsigned int)pad > 2) return;
|
||||||
if (summed[pad]) {
|
if (summed[pad] > 0) {
|
||||||
summed[pad]--;
|
summed[pad]--;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -410,7 +412,6 @@ void Update(int pad) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pads[currentPad].mode == 0x41) {
|
if (pads[currentPad].mode == 0x41) {
|
||||||
//if (activeConfigs[currentPad] && pads[currentPad].mode == 0x41 && activeConfigs[currentPad]->analogDigitals) {
|
|
||||||
s[currentPad].sticks[0].horiz +=
|
s[currentPad].sticks[0].horiz +=
|
||||||
s[currentPad].sticks[1].horiz +
|
s[currentPad].sticks[1].horiz +
|
||||||
s[currentPad].sticks[2].horiz;
|
s[currentPad].sticks[2].horiz;
|
||||||
|
@ -422,13 +423,15 @@ void Update(int pad) {
|
||||||
CapSum(&s[currentPad]);
|
CapSum(&s[currentPad]);
|
||||||
if (lockStateChanged[currentPad]) {
|
if (lockStateChanged[currentPad]) {
|
||||||
if (lockStateChanged[currentPad] & LOCK_BOTH) {
|
if (lockStateChanged[currentPad] & LOCK_BOTH) {
|
||||||
if (pads[currentPad].lockedState != (LOCK_DIRECTION | LOCK_BUTTONS))
|
if (pads[currentPad].lockedState != (LOCK_DIRECTION | LOCK_BUTTONS)) {
|
||||||
// enable the one that's not enabled.
|
// Enable the one that's not enabled.
|
||||||
lockStateChanged[currentPad] ^= pads[currentPad].lockedState^(LOCK_DIRECTION | LOCK_BUTTONS);
|
lockStateChanged[currentPad] ^= pads[currentPad].lockedState^(LOCK_DIRECTION | LOCK_BUTTONS);
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
// Disable both
|
// Disable both
|
||||||
lockStateChanged[currentPad] ^= LOCK_DIRECTION | LOCK_BUTTONS;
|
lockStateChanged[currentPad] ^= LOCK_DIRECTION | LOCK_BUTTONS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (lockStateChanged[currentPad] & LOCK_DIRECTION) {
|
if (lockStateChanged[currentPad] & LOCK_DIRECTION) {
|
||||||
if (pads[currentPad].lockedState & LOCK_DIRECTION) {
|
if (pads[currentPad].lockedState & LOCK_DIRECTION) {
|
||||||
memset(pads[currentPad].lockedSum.sticks, 0, sizeof(pads[currentPad].lockedSum.sticks));
|
memset(pads[currentPad].lockedSum.sticks, 0, sizeof(pads[currentPad].lockedSum.sticks));
|
||||||
|
@ -560,7 +563,8 @@ s32 CALLBACK PADinit(u32 flags) {
|
||||||
|
|
||||||
|
|
||||||
// Note to self: Has to be a define for the sizeof() to work right.
|
// Note to self: Has to be a define for the sizeof() to work right.
|
||||||
// Note to self 2: All are the same size, anyways, except for full DS2 response and digital mode response.
|
// Note to self 2: All are the same size, anyways, except for longer full DS2 response
|
||||||
|
// and shorter digital mode response.
|
||||||
#define SET_RESULT(a) { \
|
#define SET_RESULT(a) { \
|
||||||
memcpy(query.response+2, a, sizeof(a)); \
|
memcpy(query.response+2, a, sizeof(a)); \
|
||||||
query.numBytes = 2+sizeof(a); \
|
query.numBytes = 2+sizeof(a); \
|
||||||
|
@ -610,29 +614,21 @@ ExtraWndProcResult HackWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
switch (uMsg) {
|
switch (uMsg) {
|
||||||
case WM_SETTEXT:
|
case WM_SETTEXT:
|
||||||
if (config.saveStateTitle) {
|
if (config.saveStateTitle) {
|
||||||
wchar_t *text;
|
wchar_t text[200];
|
||||||
int len;
|
int len;
|
||||||
if (IsWindowUnicode(hWnd)) {
|
if (IsWindowUnicode(hWnd)) {
|
||||||
text = wcsdup((wchar_t*) lParam);
|
len = wcslen((wchar_t*) lParam);
|
||||||
|
if (len < sizeof(text)/sizeof(wchar_t)) wcscpy(text, (wchar_t*) lParam);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char *ascii = (char*) lParam;
|
len = MultiByteToWideChar(CP_ACP, 0, (char*) lParam, -1, text, sizeof(text)/sizeof(wchar_t));
|
||||||
len = (int)strlen(ascii)+1;
|
|
||||||
text = (wchar_t*) calloc(len, sizeof(wchar_t));
|
|
||||||
MultiByteToWideChar(CP_ACP, 0, ascii, -1, text, len);
|
|
||||||
}
|
}
|
||||||
if (!wcsstr(text, L"State")) {
|
if (len > 0 && len < 150 && !wcsstr(text, L" | State ")) {
|
||||||
int len = wcslen(text);
|
wsprintfW(text+len, L" | State %i", saveStateIndex);
|
||||||
if (len < 150) {
|
SetWindowText(hWnd, text);
|
||||||
wchar_t newTitle[200];
|
|
||||||
wsprintfW(newTitle, L"%s | State %i", text, saveStateIndex);
|
|
||||||
free(text);
|
|
||||||
SetWindowText(hWnd, newTitle);
|
|
||||||
return NO_WND_PROC;
|
return NO_WND_PROC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(text);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case WM_DEVICECHANGE:
|
case WM_DEVICECHANGE:
|
||||||
if (wParam == DBT_DEVNODES_CHANGED) {
|
if (wParam == DBT_DEVNODES_CHANGED) {
|
||||||
|
@ -727,9 +723,14 @@ s32 CALLBACK PADopen(void *pDsp) {
|
||||||
|
|
||||||
query.lastByte = 1;
|
query.lastByte = 1;
|
||||||
query.numBytes = 0;
|
query.numBytes = 0;
|
||||||
|
// I'd really rather use this line, but GetActiveWindow() does not have complete specs.
|
||||||
|
// It *seems* to return null when no window from this thread has focus, but the
|
||||||
|
// Microsoft specs seem to imply it returns the window from this thread that would have focus,
|
||||||
|
// if any window did (topmost in this thread?). Which isn't what I want, and doesn't seem
|
||||||
|
// to be what it actually does.
|
||||||
|
// activeWindow = GetActiveWindow() == hWnd;
|
||||||
|
|
||||||
if (GetAncestor(hWnd, GA_ROOT) == GetAncestor(GetForegroundWindow(), GA_ROOT))
|
activeWindow = (GetAncestor(hWnd, GA_ROOT) == GetAncestor(GetForegroundWindow(), GA_ROOT));
|
||||||
activeWindow = 1;
|
|
||||||
UpdateEnabledDevices();
|
UpdateEnabledDevices();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -746,7 +747,7 @@ void CALLBACK PADclose() {
|
||||||
u8 CALLBACK PADstartPoll(int pad) {
|
u8 CALLBACK PADstartPoll(int pad) {
|
||||||
DEBUG_NEW_SET();
|
DEBUG_NEW_SET();
|
||||||
pad--;
|
pad--;
|
||||||
if (pad == !(!pad)) {
|
if ((unsigned int)pad <= 1) {
|
||||||
query.queryDone = 0;
|
query.queryDone = 0;
|
||||||
query.pad = pad;
|
query.pad = pad;
|
||||||
query.numBytes = 2;
|
query.numBytes = 2;
|
||||||
|
@ -810,9 +811,6 @@ u8 CALLBACK PADpoll(u8 value) {
|
||||||
// Not sure about this. Forces wammy to be from 0 to 0x7F.
|
// Not sure about this. Forces wammy to be from 0 to 0x7F.
|
||||||
// if (sum->sticks[2].vert > 0) sum->sticks[2].vert = 0;
|
// if (sum->sticks[2].vert > 0) sum->sticks[2].vert = 0;
|
||||||
}
|
}
|
||||||
if (sum->sticks[0].vert) {
|
|
||||||
sum=sum;
|
|
||||||
}
|
|
||||||
b1 -= ((sum->sticks[0].vert<=-128) << 4);
|
b1 -= ((sum->sticks[0].vert<=-128) << 4);
|
||||||
b1 -= ((sum->sticks[0].horiz>=128) << 5);
|
b1 -= ((sum->sticks[0].horiz>=128) << 5);
|
||||||
b1 -= ((sum->sticks[0].vert>=128) << 6);
|
b1 -= ((sum->sticks[0].vert>=128) << 6);
|
||||||
|
@ -973,7 +971,6 @@ u8 CALLBACK PADpoll(u8 value) {
|
||||||
break;
|
break;
|
||||||
// VIBRATION_TOGGLE
|
// VIBRATION_TOGGLE
|
||||||
case 0x4D:
|
case 0x4D:
|
||||||
{
|
|
||||||
if (query.lastByte>=3) {
|
if (query.lastByte>=3) {
|
||||||
if (value == 0) {
|
if (value == 0) {
|
||||||
pad->vibrateI[0] = (u8)query.lastByte;
|
pad->vibrateI[0] = (u8)query.lastByte;
|
||||||
|
@ -983,7 +980,6 @@ u8 CALLBACK PADpoll(u8 value) {
|
||||||
}
|
}
|
||||||
pad->vibrate[query.lastByte-2] = value;
|
pad->vibrate[query.lastByte-2] = value;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 0x4F:
|
case 0x4F:
|
||||||
if (query.lastByte == 3 || query.lastByte == 4) {
|
if (query.lastByte == 3 || query.lastByte == 4) {
|
||||||
|
@ -1008,8 +1004,6 @@ u8 CALLBACK PADpoll(u8 value) {
|
||||||
DEBUG_OUT(query.response[query.lastByte]);
|
DEBUG_OUT(query.response[query.lastByte]);
|
||||||
return query.response[query.lastByte];
|
return query.response[query.lastByte];
|
||||||
}
|
}
|
||||||
DEBUG_OUT(0);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns: 1 if supports pad1
|
// returns: 1 if supports pad1
|
||||||
|
@ -1019,8 +1013,6 @@ u32 CALLBACK PADquery() {
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// extended funcs
|
|
||||||
|
|
||||||
//void CALLBACK PADgsDriverInfo(GSdriverInfo *info) {
|
//void CALLBACK PADgsDriverInfo(GSdriverInfo *info) {
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
@ -1041,16 +1033,17 @@ s32 CALLBACK PADtest() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD CALLBACK HideWindow(void *) {
|
// For escape fullscreen hack. This doesn't work when called from another thread, for some reason.
|
||||||
ShowWindow(hWnd, 0);
|
// That includes a new thread, independent of GS and PCSX2 thread, so use this to make sure it's
|
||||||
return 0;
|
// called from the right spot.
|
||||||
}
|
|
||||||
|
|
||||||
// For escape fillscreen hack.
|
|
||||||
ExtraWndProcResult KillFullScreenProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *output) {
|
ExtraWndProcResult KillFullScreenProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *output) {
|
||||||
// Double check to prevent infinite recursion.
|
// Prevent infinite recursion. Could also just remove this function from the list,
|
||||||
if (IsWindowMaximized(hWnd)) {
|
// but CONTINUE_BLISSFULLY_AND_RELEASE_PROC is a safer way to do that.
|
||||||
|
static int inFunction = 0;
|
||||||
|
if (!inFunction) {
|
||||||
|
inFunction = 1;
|
||||||
ShowWindow(hWnd, 0);
|
ShowWindow(hWnd, 0);
|
||||||
|
inFunction = 0;
|
||||||
}
|
}
|
||||||
return CONTINUE_BLISSFULLY_AND_RELEASE_PROC;
|
return CONTINUE_BLISSFULLY_AND_RELEASE_PROC;
|
||||||
}
|
}
|
||||||
|
@ -1083,12 +1076,11 @@ keyEvent* CALLBACK PADkeyEvent() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ev.key == VK_F2 && ev.event == KEYPRESS) {
|
if (ev.key == VK_F2 && ev.event == KEYPRESS) {
|
||||||
if (shiftDown)
|
saveStateIndex += 1 - 2*shiftDown;
|
||||||
saveStateIndex--;
|
|
||||||
else
|
|
||||||
saveStateIndex++;
|
|
||||||
saveStateIndex = (saveStateIndex+10)%10;
|
saveStateIndex = (saveStateIndex+10)%10;
|
||||||
if (config.saveStateTitle) {
|
if (config.saveStateTitle) {
|
||||||
|
// GSDX only checks its window's message queue at certain points or something, so
|
||||||
|
// have to do this in another thread to prevent lockup.
|
||||||
HANDLE hThread = CreateThread(0, 0, RenameWindowThreadProc, 0, 0, 0);
|
HANDLE hThread = CreateThread(0, 0, RenameWindowThreadProc, 0, 0, 0);
|
||||||
if (hThread) CloseHandle(hThread);
|
if (hThread) CloseHandle(hThread);
|
||||||
}
|
}
|
||||||
|
|
|
@ -227,7 +227,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
GROUPBOX "Input APIs",IDC_STATIC,7,6,410,131
|
GROUPBOX "Input APIs",IDC_STATIC,7,6,410,131
|
||||||
GROUPBOX "Keyboard API",IDC_STATIC,16,16,192,61
|
GROUPBOX "Keyboard API",IDC_STATIC,16,16,192,61
|
||||||
CONTROL "Windows messaging",IDC_KB_WM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,23,28,112,10
|
CONTROL "Windows messaging (Recommended)",IDC_KB_WM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,23,28,134,10
|
||||||
CONTROL "Raw input (XP and later only)",IDC_KB_RAW,"Button",BS_AUTORADIOBUTTON,23,40,112,10
|
CONTROL "Raw input (XP and later only)",IDC_KB_RAW,"Button",BS_AUTORADIOBUTTON,23,40,112,10
|
||||||
CONTROL "DirectInput",IDC_KB_DI,"Button",BS_AUTORADIOBUTTON,23,52,112,10
|
CONTROL "DirectInput",IDC_KB_DI,"Button",BS_AUTORADIOBUTTON,23,52,112,10
|
||||||
CONTROL "Disable (Intended for use with other pad plugins)",IDC_KB_DISABLE,
|
CONTROL "Disable (Intended for use with other pad plugins)",IDC_KB_DISABLE,
|
||||||
|
@ -262,15 +262,15 @@ BEGIN
|
||||||
PUSHBUTTON "Test Device",ID_TEST,86,289,57,15
|
PUSHBUTTON "Test Device",ID_TEST,86,289,57,15
|
||||||
PUSHBUTTON "Refresh",ID_REFRESH,152,289,48,15
|
PUSHBUTTON "Refresh",ID_REFRESH,152,289,48,15
|
||||||
GROUPBOX "Hacks",IDC_STATIC,216,211,201,73
|
GROUPBOX "Hacks",IDC_STATIC,216,211,201,73
|
||||||
CONTROL "Send escape on close",IDC_CLOSE_HACK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,223,113,10
|
CONTROL "Send escape on window close",IDC_CLOSE_HACK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,223,113,10
|
||||||
CONTROL "Exit emulator on close",IDC_CLOSE_HACK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,235,86,10
|
CONTROL "Exit emulator on window close",IDC_CLOSE_HACK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,235,112,10
|
||||||
CONTROL "Hide on fullscreen escape",IDC_ESCAPE_FULLSCREEN_HACK,
|
CONTROL "Safe fullscreen exit on escape",IDC_ESCAPE_FULLSCREEN_HACK,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,247,97,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,247,112,10
|
||||||
CONTROL "Always hide cursor",IDC_FORCE_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,259,71,10
|
CONTROL "Always hide cursor",IDC_FORCE_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,259,71,10
|
||||||
CONTROL "Disable screensaver",IDC_DISABLE_SCREENSAVER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,271,80,10
|
CONTROL "Disable screensaver",IDC_DISABLE_SCREENSAVER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,224,271,80,10
|
||||||
CONTROL "Guitar Hero 2 Hack",IDC_GH2_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,333,223,76,10
|
CONTROL "Guitar Hero 2 Hack",IDC_GH2_HACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,223,76,10
|
||||||
CONTROL "Use GS thread",IDC_GS_THREAD_INPUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,333,235,62,10
|
CONTROL "Use GS thread",IDC_GS_THREAD_INPUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,235,62,10
|
||||||
CONTROL "Save state in title",IDC_SAVE_STATE_TITLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,333,247,72,10
|
CONTROL "Save state # in title",IDC_SAVE_STATE_TITLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,247,79,10
|
||||||
GROUPBOX "Debugging",IDC_STATIC,216,285,79,25
|
GROUPBOX "Debugging",IDC_STATIC,216,285,79,25
|
||||||
CONTROL "Enable logging",IDC_DEBUG_FILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,296,63,10
|
CONTROL "Enable logging",IDC_DEBUG_FILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,296,63,10
|
||||||
PUSHBUTTON "Save",ID_SAVE,369,295,48,15
|
PUSHBUTTON "Save",ID_SAVE,369,295,48,15
|
||||||
|
|
|
@ -542,50 +542,6 @@
|
||||||
RelativePath="resource.h"
|
RelativePath="resource.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="VKey.cpp"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
PreprocessorDefinitions=""
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
FavorSizeOrSpeed="2"
|
|
||||||
PreprocessorDefinitions=""
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|x64"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
PreprocessorDefinitions=""
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|x64"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
FavorSizeOrSpeed="2"
|
|
||||||
PreprocessorDefinitions=""
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="VKey.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Resource Files"
|
Name="Resource Files"
|
||||||
|
@ -723,6 +679,50 @@
|
||||||
RelativePath=".\InputManager.h"
|
RelativePath=".\InputManager.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="VKey.cpp"
|
||||||
|
>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
PreprocessorDefinitions=""
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
FavorSizeOrSpeed="2"
|
||||||
|
PreprocessorDefinitions=""
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|x64"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
PreprocessorDefinitions=""
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|x64"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
FavorSizeOrSpeed="2"
|
||||||
|
PreprocessorDefinitions=""
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="VKey.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\WndProcEater.cpp"
|
RelativePath=".\WndProcEater.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -112,7 +112,6 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
static POINT rawOrigCursorPos;
|
static POINT rawOrigCursorPos;
|
||||||
static POINT rawCenter;
|
|
||||||
|
|
||||||
class RawInputMouse : public WindowsMouse {
|
class RawInputMouse : public WindowsMouse {
|
||||||
public:
|
public:
|
||||||
|
@ -146,12 +145,6 @@ public:
|
||||||
Deactivate();
|
Deactivate();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
RECT r;
|
|
||||||
// No need to clip cursor, since I seem to have complete control of buttons.
|
|
||||||
GetWindowRect(hWnd, &r);
|
|
||||||
rawCenter.x = (r.left + r.right)/2;
|
|
||||||
rawCenter.y = (r.top + r.bottom)/2;
|
|
||||||
SetCursorPos(rawCenter.x, rawCenter.y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AllocState();
|
AllocState();
|
||||||
|
@ -213,13 +206,12 @@ ExtraWndProcResult RawInputWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l
|
||||||
button++;
|
button++;
|
||||||
buttons >>= 2;
|
buttons >>= 2;
|
||||||
}
|
}
|
||||||
if (in.data.mouse.usButtonFlags & 0x400) {
|
if (in.data.mouse.usButtonFlags & RI_MOUSE_WHEEL) {
|
||||||
rim->UpdateAxis(2, ((short)in.data.mouse.usButtonData)/WHEEL_DELTA);
|
rim->UpdateAxis(2, ((short)in.data.mouse.usButtonData)/WHEEL_DELTA);
|
||||||
}
|
}
|
||||||
if (in.data.mouse.lLastX || in.data.mouse.lLastY) {
|
if (in.data.mouse.lLastX || in.data.mouse.lLastY) {
|
||||||
rim->UpdateAxis(0, in.data.mouse.lLastX);
|
rim->UpdateAxis(0, in.data.mouse.lLastX);
|
||||||
rim->UpdateAxis(1, in.data.mouse.lLastY);
|
rim->UpdateAxis(1, in.data.mouse.lLastY);
|
||||||
SetCursorPos(rawCenter.x, rawCenter.y);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,6 +85,7 @@ public:
|
||||||
|
|
||||||
GetCursorPos(&origCursorPos);
|
GetCursorPos(&origCursorPos);
|
||||||
active = 1;
|
active = 1;
|
||||||
|
|
||||||
RECT r;
|
RECT r;
|
||||||
GetWindowRect(hWnd, &r);
|
GetWindowRect(hWnd, &r);
|
||||||
ClipCursor(&r);
|
ClipCursor(&r);
|
||||||
|
@ -137,6 +138,7 @@ ExtraWndProcResult WindowsMessagingWndProc(HWND hWnd, UINT uMsg, WPARAM wParam,
|
||||||
return NO_WND_PROC;
|
return NO_WND_PROC;
|
||||||
}
|
}
|
||||||
else if (uMsg == WM_ACTIVATE) {
|
else if (uMsg == WM_ACTIVATE) {
|
||||||
|
// Not really needed, but doesn't hurt.
|
||||||
memset(wmk->physicalControlState, 0, sizeof(int) * wmk->numPhysicalControls);
|
memset(wmk->physicalControlState, 0, sizeof(int) * wmk->numPhysicalControls);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -177,8 +179,9 @@ ExtraWndProcResult WindowsMessagingWndProc(HWND hWnd, UINT uMsg, WPARAM wParam,
|
||||||
wmm->UpdateAxis(3, ((int)wParam>>16)/WHEEL_DELTA);
|
wmm->UpdateAxis(3, ((int)wParam>>16)/WHEEL_DELTA);
|
||||||
return NO_WND_PROC;
|
return NO_WND_PROC;
|
||||||
}
|
}
|
||||||
/*
|
// Taken care of elsewhere. When binding, killing focus means stop reading input.
|
||||||
else if (uMsg == WM_KILLFOCUS) {
|
// When running PCSX2, I release all mouse and keyboard input elsewhere.
|
||||||
|
/*else if (uMsg == WM_KILLFOCUS) {
|
||||||
wmm->Deactivate();
|
wmm->Deactivate();
|
||||||
}//*/
|
}//*/
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue