void Utility::inputEvent(uint16_t code) { //forward key-press event //(in case window is currently active and capturing a new button / axis assignment) winInputCapture->inputEvent(code); //if escape key is pressed on *any* keyboard; release the mouse if it is acquired for(unsigned i = 0; i < keyboard<>::count; i++) { if(code == keyboard<>::index(i, keyboard<>::escape) && inputManager.state(code) && input.acquired()) { input.unacquire(); return; //do not trigger other UI actions that may be bound to escape key } } if(winMain->window->isActiveWindow()) { bool resizeWindow = false; if(isButtonDown(code, inputUiGeneral.loadCartridge)) { string filename = selectCartridge(); if(filename.length() > 0) loadCartridge(filename); } if(isButtonDown(code, inputUiGeneral.pauseEmulation)) { application.pause = !application.pause; } if(isButtonDown(code, inputUiGeneral.resetSystem)) { modifySystemState(Reset); } if(isButtonDown(code, inputUiGeneral.powerCycleSystem)) { modifySystemState(PowerCycle); } if(isButtonDown(code, inputUiGeneral.lowerSpeed)) { config.system.speed--; updateEmulationSpeed(); winMain->syncUi(); } if(isButtonDown(code, inputUiGeneral.raiseSpeed)) { config.system.speed++; updateEmulationSpeed(); winMain->syncUi(); } if(isButtonDown(code, inputUiGeneral.toggleCheatSystem)) { if(cheat.enabled() == false) { cheat.enable(); showMessage("Cheat system enabled."); } else { cheat.disable(); showMessage("Cheat system disabled."); } } if(isButtonDown(code, inputUiGeneral.toggleFullscreen)) { config.video.isFullscreen = !config.video.isFullscreen; updateFullscreenState(); winMain->syncUi(); } if(isButtonDown(code, inputUiGeneral.toggleMenu)) { winMain->window->menuBar()->setVisible(!winMain->window->menuBar()->isVisibleTo(winMain->window)); resizeWindow = true; } if(isButtonDown(code, inputUiGeneral.toggleStatus)) { winMain->window->statusBar()->setVisible(!winMain->window->statusBar()->isVisibleTo(winMain->window)); resizeWindow = true; } //prevent calling twice when toggleMenu == toggleStatus if(resizeWindow == true) { resizeMainWindow(); } if(isButtonDown(code, inputUiGeneral.exitEmulator)) { application.terminate = true; } } }
void Utility::inputEvent(uint16_t code) { //forward key-press event //(in case window is currently active and capturing a new button / axis assignment) winInputCapture->inputEvent(code); for(unsigned i = 0; i < keyboard<>::count; i++) { if(code == keyboard<>::index(i, keyboard<>::escape) && inputManager.state(code)) { if(mainWindow->window->isActiveWindow() && input.acquired()) { //release mouse capture input.unacquire(); return; //do not trigger other UI actions that may be bound to escape key } else if(settingsWindow->window->isActiveWindow()) { settingsWindow->window->hide(); return; } else if(toolsWindow->window->isActiveWindow()) { toolsWindow->window->hide(); return; } } } if(mainWindow->window->isActiveWindow()) { bool resizeWindow = false; if(isButtonDown(code, inputUiGeneral.loadCartridge)) { string filename = selectCartridge(); if(filename.length() > 0) loadCartridge(filename); } if(isButtonDown(code, inputUiGeneral.pauseEmulation)) { application.pause = !application.pause; if(application.pause) audio.clear(); } if(isButtonDown(code, inputUiGeneral.resetSystem)) { modifySystemState(Reset); } if(isButtonDown(code, inputUiGeneral.powerCycleSystem)) { modifySystemState(PowerCycle); } if(isButtonDown(code, inputUiGeneral.saveScreenshot)) { //tell SNES::Interface to save a screenshot at the next video_refresh() event interface.saveScreenshot = true; } if(isButtonDown(code, inputUiGeneral.showStateManager)) { toolsWindow->showStateManager(); } if(isButtonDown(code, inputUiGeneral.quickLoad1)) utility.quickLoad(0); if(isButtonDown(code, inputUiGeneral.quickLoad2)) utility.quickLoad(1); if(isButtonDown(code, inputUiGeneral.quickLoad3)) utility.quickLoad(2); if(isButtonDown(code, inputUiGeneral.quickSave1)) utility.quickSave(0); if(isButtonDown(code, inputUiGeneral.quickSave2)) utility.quickSave(1); if(isButtonDown(code, inputUiGeneral.quickSave3)) utility.quickSave(2); if(isButtonDown(code, inputUiGeneral.lowerSpeed)) { config.system.speed--; updateEmulationSpeed(); mainWindow->syncUi(); } if(isButtonDown(code, inputUiGeneral.raiseSpeed)) { config.system.speed++; updateEmulationSpeed(); mainWindow->syncUi(); } if(isButtonDown(code, inputUiGeneral.toggleCheatSystem)) { if(SNES::cheat.enabled() == false) { SNES::cheat.enable(); showMessage("Cheat system enabled."); } else { SNES::cheat.disable(); showMessage("Cheat system disabled."); } } if(isButtonDown(code, inputUiGeneral.toggleFullscreen)) { config.video.isFullscreen = !config.video.isFullscreen; updateFullscreenState(); mainWindow->syncUi(); } if(isButtonDown(code, inputUiGeneral.toggleMenu)) { mainWindow->window->menuBar()->setVisible(!mainWindow->window->menuBar()->isVisibleTo(mainWindow->window)); resizeWindow = true; } if(isButtonDown(code, inputUiGeneral.toggleStatus)) { mainWindow->window->statusBar()->setVisible(!mainWindow->window->statusBar()->isVisibleTo(mainWindow->window)); resizeWindow = true; } //prevent calling twice when toggleMenu == toggleStatus if(resizeWindow == true) { resizeMainWindow(); } if(isButtonDown(code, inputUiGeneral.exitEmulator)) { application.terminate = true; } } }