void UpdateRawInputAndHotkeys() { KeyboardUpdateState(); UpdateJoysticks(); HandleHotkeys(); }
void FCEUD_UpdateInput() { bool joy=false,mouse=false; EMOVIEMODE FCEUMOVState = FCEUMOV_Mode(); KeyboardUpdateState(); UpdateJoysticks(); HandleHotkeys(); { for(int x=0;x<2;x++) switch(InputType[x]) { case SI_GAMEPAD: joy=true; break; case SI_ARKANOID: mouse=true; break; case SI_ZAPPER: mouse=true; break; case SI_POWERPADA: case SI_POWERPADB: powerpadbuf[x]=UpdatePPadData(x); break; } switch(InputType[2]) { case SIFC_ARKANOID: mouse=true; break; case SIFC_SHADOW: mouse=true; break; case SIFC_FKB: if(cidisabled) UpdateFKB(); break; case SIFC_SUBORKB: if(cidisabled) UpdateSuborKB(); break; case SIFC_HYPERSHOT: UpdateHyperShot();break; case SIFC_MAHJONG: UpdateMahjong();break; case SIFC_QUIZKING: UpdateQuizKing();break; case SIFC_FTRAINERB: case SIFC_FTRAINERA: UpdateFTrainer();break; case SIFC_TOPRIDER: UpdateTopRider();break; case SIFC_OEKAKIDS: mouse=true; break; } if(joy) UpdateGamepad(); if(mouse) if(FCEUMOVState != MOVIEMODE_PLAY) //FatRatKnight: Moved this if out of the function GetMouseData(MouseData); //A more concise fix may be desired. } }
void FCEUD_UpdateInput(void) { int x; int t = 0; KeyboardUpdateState(); UpdateJoysticks(); //UpdatePhysicalInput(); KeyboardCommands(); for (x = 0; x < 2; x++) switch (InputType[x]) { case SI_GAMEPAD: t |= 1; break; case SI_ARKANOID: t |= 2; break; case SI_MOUSE: t |= 2; break; case SI_ZAPPER: t |= 2; break; case SI_POWERPADA: case SI_POWERPADB: powerpadbuf[x] = UpdatePPadData(x); break; } switch (InputType[2]) { case SIFC_ARKANOID: t |= 2; break; case SIFC_SHADOW: t |= 2; break; case SIFC_FKB: if (cidisabled) UpdateFKB(); break; case SIFC_SUBORKB: if (cidisabled) UpdateSuborKB(); break; case SIFC_HYPERSHOT: UpdateHyperShot(); break; case SIFC_MAHJONG: UpdateMahjong(); break; case SIFC_QUIZKING: UpdateQuizKing(); break; case SIFC_FTRAINERB: case SIFC_FTRAINERA: UpdateFTrainer(); break; case SIFC_TOPRIDER: UpdateTopRider(); break; case SIFC_OEKAKIDS: t |= 2; break; } if (t & 1) UpdateGamepad(); if (t & 2) GetMouseData(MouseData); }
//Callback function for the dialog where the user can change hotkeys. BOOL CALLBACK ChangeInputDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { static HANDLE hThread = NULL; static DWORD dwThreadId = 0; static struct INPUTDLGTHREADARGS threadargs; static int key = 0; switch (uMsg) { case WM_INITDIALOG: { // Start the message thread. threadargs.hThreadExit = CreateEvent(NULL, TRUE, FALSE, NULL); threadargs.hwndDlg = hwndDlg; hThread = CreateThread(NULL, 0, NewInputDialogThread, (LPVOID)&threadargs, 0, &dwThreadId); key = 0; memset(keyonce, 0, sizeof(keyonce)); KeyboardSetBackgroundAccess(true); SetFocus(GetDlgItem(hwndDlg, LBL_KEY_COMBO)); CenterWindowOnScreen(hwndDlg); } return FALSE; case WM_COMMAND: switch(LOWORD(wParam)) // CaH4e3: BN_CLICKED redundant define removed since it always 0, Esc mapping used to be handled as well (I need it too :)) { case BTN_OK: // Send quit message. PostMessage(hwndDlg, WM_USER + 99, 0, 0); break; case BTN_CLEAR: key = -1; // Send quit message. PostMessage(hwndDlg, WM_USER + 99, 0, 0); break; default: break; } break; case WM_USER: { // Our thread sent us a timer signal. int newkey; int meta = GetKeyMeta(key); KeyboardUpdateState(); if((newkey = GetKeyPressed()) != 0) { key = newkey | meta; ClearExtraMeta(&key); SetDlgItemText(hwndDlg, LBL_KEY_COMBO, GetKeyComboName(key)); } else if(NothingPressed() && key) { PostMessage(hwndDlg, WM_USER + 99, 0, 0); // Send quit message. } } break; case WM_CLOSE: // exit without changing the key mapping key = 0; case WM_USER + 99: // Done with keyboard. KeyboardSetBackgroundAccess(false); // Kill the thread. SetEvent(threadargs.hThreadExit); WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); CloseHandle(threadargs.hThreadExit); // End the dialog. EndDialog(hwndDlg, key); return TRUE; default: break; } return FALSE; }