More Qt GUI hot key fixes for new setup.

This commit is contained in:
mjbudd77 2021-04-06 21:23:41 -04:00
parent 0419e22179
commit 4cc02ed25b
6 changed files with 212 additions and 204 deletions

View File

@ -572,9 +572,11 @@ void consoleWin_t::initHotKeys(void)
connect( Hotkeys[ HK_LAG_COUNTER_DISPLAY ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleLagCounterDisplay(void)) ); connect( Hotkeys[ HK_LAG_COUNTER_DISPLAY ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleLagCounterDisplay(void)) );
connect( Hotkeys[ HK_FA_LAG_SKIP ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleFrameAdvLagSkip(void)) ); connect( Hotkeys[ HK_FA_LAG_SKIP ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleFrameAdvLagSkip(void)) );
connect( Hotkeys[ HK_BIND_STATE ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleMovieBindSaveState(void))); connect( Hotkeys[ HK_BIND_STATE ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleMovieBindSaveState(void)));
connect( Hotkeys[ HK_TOGGLE_FRAME_DISPLAY ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleMovieFrameDisplay(void))); connect( Hotkeys[ HK_TOGGLE_FRAME_DISPLAY ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleMovieFrameDisplay(void)) );
connect( Hotkeys[ HK_MOVIE_TOGGLE_RW ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleMovieReadWrite(void))); connect( Hotkeys[ HK_MOVIE_TOGGLE_RW ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleMovieReadWrite(void)) );
connect( Hotkeys[ HK_TOGGLE_INPUT_DISPLAY ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleInputDisplay(void))); connect( Hotkeys[ HK_TOGGLE_INPUT_DISPLAY ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleInputDisplay(void)) );
connect( Hotkeys[ HK_TOGGLE_BG ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleBackground(void)) );
connect( Hotkeys[ HK_TOGGLE_FG ].getShortcut(), SIGNAL(activated()), this, SLOT(toggleForeground(void)) );
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void consoleWin_t::createMainMenu(void) void consoleWin_t::createMainMenu(void)
@ -1073,6 +1075,9 @@ void consoleWin_t::createMainMenu(void)
fdsSwitchAct->setStatusTip(tr("Switch Disk")); fdsSwitchAct->setStatusTip(tr("Switch Disk"));
connect(fdsSwitchAct, SIGNAL(triggered()), this, SLOT(fdsSwitchDisk(void)) ); connect(fdsSwitchAct, SIGNAL(triggered()), this, SLOT(fdsSwitchDisk(void)) );
Hotkeys[ HK_FDS_SELECT ].setAction( fdsSwitchAct );
connect( Hotkeys[ HK_FDS_SELECT ].getShortcut(), SIGNAL(activated()), this, SLOT(fdsSwitchDisk(void)) );
subMenu->addAction(fdsSwitchAct); subMenu->addAction(fdsSwitchAct);
// Emulation -> FDS -> Eject Disk // Emulation -> FDS -> Eject Disk
@ -1081,6 +1086,9 @@ void consoleWin_t::createMainMenu(void)
fdsEjectAct->setStatusTip(tr("Eject Disk")); fdsEjectAct->setStatusTip(tr("Eject Disk"));
connect(fdsEjectAct, SIGNAL(triggered()), this, SLOT(fdsEjectDisk(void)) ); connect(fdsEjectAct, SIGNAL(triggered()), this, SLOT(fdsEjectDisk(void)) );
Hotkeys[ HK_FDS_EJECT ].setAction( fdsEjectAct );
connect( Hotkeys[ HK_FDS_EJECT ].getShortcut(), SIGNAL(activated()), this, SLOT(fdsEjectDisk(void)) );
subMenu->addAction(fdsEjectAct); subMenu->addAction(fdsEjectAct);
// Emulation -> FDS -> Load BIOS // Emulation -> FDS -> Load BIOS
@ -1190,6 +1198,9 @@ void consoleWin_t::createMainMenu(void)
cheatsAct->setStatusTip(tr("Open Cheat Window")); cheatsAct->setStatusTip(tr("Open Cheat Window"));
connect(cheatsAct, SIGNAL(triggered()), this, SLOT(openCheats(void)) ); connect(cheatsAct, SIGNAL(triggered()), this, SLOT(openCheats(void)) );
Hotkeys[ HK_CHEAT_MENU ].setAction( cheatsAct );
connect( Hotkeys[ HK_CHEAT_MENU ].getShortcut(), SIGNAL(activated()), this, SLOT(openCheats(void)) );
toolsMenu->addAction(cheatsAct); toolsMenu->addAction(cheatsAct);
// Tools -> RAM Search // Tools -> RAM Search
@ -1298,11 +1309,14 @@ void consoleWin_t::createMainMenu(void)
// Movie -> Play // Movie -> Play
openMovAct = new QAction(tr("&Play"), this); openMovAct = new QAction(tr("&Play"), this);
openMovAct->setShortcut( QKeySequence(tr("Shift+F7"))); //openMovAct->setShortcut( QKeySequence(tr("Shift+F7")));
openMovAct->setStatusTip(tr("Play Movie File")); openMovAct->setStatusTip(tr("Play Movie File"));
openMovAct->setIcon( style()->standardIcon( QStyle::SP_MediaPlay ) ); openMovAct->setIcon( style()->standardIcon( QStyle::SP_MediaPlay ) );
connect(openMovAct, SIGNAL(triggered()), this, SLOT(openMovie(void)) ); connect(openMovAct, SIGNAL(triggered()), this, SLOT(openMovie(void)) );
Hotkeys[ HK_PLAY_MOVIE_FROM ].setAction( openMovAct );
connect( Hotkeys[ HK_PLAY_MOVIE_FROM ].getShortcut(), SIGNAL(activated()), this, SLOT(openMovie(void)) );
movieMenu->addAction(openMovAct); movieMenu->addAction(openMovAct);
// Movie -> Stop // Movie -> Stop
@ -1312,13 +1326,16 @@ void consoleWin_t::createMainMenu(void)
stopMovAct->setIcon( style()->standardIcon( QStyle::SP_MediaStop ) ); stopMovAct->setIcon( style()->standardIcon( QStyle::SP_MediaStop ) );
connect(stopMovAct, SIGNAL(triggered()), this, SLOT(stopMovie(void)) ); connect(stopMovAct, SIGNAL(triggered()), this, SLOT(stopMovie(void)) );
Hotkeys[ HK_STOP_MOVIE ].setAction( stopMovAct );
connect( Hotkeys[ HK_STOP_MOVIE ].getShortcut(), SIGNAL(activated()), this, SLOT(stopMovie(void)) );
movieMenu->addAction(stopMovAct); movieMenu->addAction(stopMovAct);
movieMenu->addSeparator(); movieMenu->addSeparator();
// Movie -> Record // Movie -> Record
recMovAct = new QAction(tr("&Record"), this); recMovAct = new QAction(tr("&Record"), this);
recMovAct->setShortcut( QKeySequence(tr("Shift+F5"))); //recMovAct->setShortcut( QKeySequence(tr("Shift+F5")));
recMovAct->setStatusTip(tr("Record Movie")); recMovAct->setStatusTip(tr("Record Movie"));
recMovAct->setIcon( QIcon(":icons/media-record.png") ); recMovAct->setIcon( QIcon(":icons/media-record.png") );
connect(recMovAct, SIGNAL(triggered()), this, SLOT(recordMovie(void)) ); connect(recMovAct, SIGNAL(triggered()), this, SLOT(recordMovie(void)) );
@ -1331,6 +1348,9 @@ void consoleWin_t::createMainMenu(void)
recAsMovAct->setStatusTip(tr("Record Movie")); recAsMovAct->setStatusTip(tr("Record Movie"));
connect(recAsMovAct, SIGNAL(triggered()), this, SLOT(recordMovieAs(void)) ); connect(recAsMovAct, SIGNAL(triggered()), this, SLOT(recordMovieAs(void)) );
Hotkeys[ HK_RECORD_MOVIE_TO ].setAction( recAsMovAct );
connect( Hotkeys[ HK_RECORD_MOVIE_TO ].getShortcut(), SIGNAL(activated()), this, SLOT(recordMovieAs(void)) );
movieMenu->addAction(recAsMovAct); movieMenu->addAction(recAsMovAct);
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
@ -2780,6 +2800,24 @@ void consoleWin_t::toggleInputDisplay(void)
fceuWrapperUnLock(); fceuWrapperUnLock();
} }
void consoleWin_t::toggleBackground(void)
{
bool fgOn, bgOn;
fceuWrapperLock();
FCEUI_GetRenderPlanes( fgOn, bgOn );
FCEUI_SetRenderPlanes( fgOn, !bgOn );
fceuWrapperUnLock();
}
void consoleWin_t::toggleForeground(void)
{
bool fgOn, bgOn;
fceuWrapperLock();
FCEUI_GetRenderPlanes( fgOn, bgOn );
FCEUI_SetRenderPlanes( !fgOn, bgOn );
fceuWrapperUnLock();
}
void consoleWin_t::toggleTurboMode(void) void consoleWin_t::toggleTurboMode(void)
{ {
NoWaiting ^= 1; NoWaiting ^= 1;

View File

@ -312,6 +312,8 @@ class consoleWin_t : public QMainWindow
void toggleMovieReadWrite(void); void toggleMovieReadWrite(void);
void toggleInputDisplay(void); void toggleInputDisplay(void);
void toggleTurboMode(void); void toggleTurboMode(void);
void toggleBackground(void);
void toggleForeground(void);
}; };

View File

@ -1934,7 +1934,7 @@ void GamePadConfigHotKey_t::keyPressEvent(QKeyEvent *event)
if ( captureState && !isModifier ) if ( captureState && !isModifier )
{ {
QKeySequence ks( event->modifiers() + event->key() ); QKeySequence ks( convKeyEvent2Sequence(event) );
k->keySeq[idx].key = event->key(); k->keySeq[idx].key = event->key();
k->keySeq[idx].modifier = event->modifiers(); k->keySeq[idx].modifier = event->modifiers();

View File

@ -119,6 +119,9 @@ int getHotKeyConfig( int i, const char **nameOut, const char **keySeqOut )
case HK_TOGGLE_BG: case HK_TOGGLE_BG:
name = "ToggleBG"; keySeq = ""; name = "ToggleBG"; keySeq = "";
break; break;
case HK_TOGGLE_FG:
name = "ToggleFG"; keySeq = "";
break;
// Save States // Save States
case HK_SAVE_STATE: case HK_SAVE_STATE:
name = "SaveState"; keySeq = "I"; name = "SaveState"; keySeq = "I";
@ -238,6 +241,18 @@ int getHotKeyConfig( int i, const char **nameOut, const char **keySeqOut )
case HK_MOVIE_TOGGLE_RW: case HK_MOVIE_TOGGLE_RW:
name = "ToggleMovieRW"; keySeq = "Q"; name = "ToggleMovieRW"; keySeq = "Q";
break; break;
case HK_PLAY_MOVIE_FROM:
name = "PlayMovieFrom"; keySeq = "";
break;
case HK_MOVIE_PLAY_RESTART:
name = "PlayMovieFromBeginning"; keySeq = "";
break;
case HK_RECORD_MOVIE_TO:
name = "RecordMovieTo"; keySeq = "";
break;
case HK_STOP_MOVIE:
name = "StopMovie"; keySeq = "";
break;
case HK_MUTE_CAPTURE: case HK_MUTE_CAPTURE:
name = "MuteCapture"; keySeq = "'"; name = "MuteCapture"; keySeq = "'";
break; break;

View File

@ -43,10 +43,17 @@ enum HOTKEY {
// VS // VS
HK_VS_INSERT_COIN, HK_VS_TOGGLE_DIPSWITCH, HK_VS_INSERT_COIN, HK_VS_TOGGLE_DIPSWITCH,
HK_CHEAT_MENU, HK_BIND_STATE, HK_LOAD_LUA, HK_TOGGLE_BG, // Movie
HK_TOGGLE_FRAME_DISPLAY, HK_TOGGLE_SUBTITLE, HK_SCREENSHOT, HK_TOGGLE_FRAME_DISPLAY, HK_TOGGLE_SUBTITLE, HK_SCREENSHOT,
HK_TOGGLE_INPUT_DISPLAY, HK_MOVIE_TOGGLE_RW, HK_MUTE_CAPTURE, HK_BIND_STATE, HK_MOVIE_TOGGLE_RW,
HK_FA_LAG_SKIP, HK_LAG_COUNTER_DISPLAY, HK_PLAY_MOVIE_FROM, HK_MOVIE_PLAY_RESTART, HK_RECORD_MOVIE_TO, HK_STOP_MOVIE,
// Display
HK_TOGGLE_FG, HK_TOGGLE_BG, HK_TOGGLE_INPUT_DISPLAY, HK_LAG_COUNTER_DISPLAY,
HK_CHEAT_MENU, HK_LOAD_LUA,
HK_MUTE_CAPTURE,
HK_FA_LAG_SKIP,
HK_VOLUME_DOWN, HK_VOLUME_UP, HK_VOLUME_DOWN, HK_VOLUME_UP,
HK_FKB_ENABLE, HK_FKB_ENABLE,
HK_MAX}; HK_MAX};

View File

@ -145,7 +145,7 @@ static uint32 JSreturn = 0;
#include "keyscan.h" #include "keyscan.h"
static uint8 g_keyState[SDL_NUM_SCANCODES]; static uint8 g_keyState[SDL_NUM_SCANCODES];
static int keyModifier = 0; static int keyModifier = 0;
static int DIPS = 0; //static int DIPS = 0;
static uint8 keyonce[SDL_NUM_SCANCODES]; static uint8 keyonce[SDL_NUM_SCANCODES];
#define KEY(__a) g_keyState[MKK(__a)] #define KEY(__a) g_keyState[MKK(__a)]
@ -438,64 +438,9 @@ void hotkey_t::setModifierFromString( const char *s )
void void
setHotKeys (void) setHotKeys (void)
{ {
int j,k;
std::string keyText;
std::string prefix = "SDL.Hotkeys.";
char id[64], val[128];
const char *hotKeyName, *hotKeySeq;
//SDL_Keycode SDL_GetKeyFromName(const char* name)
for (int i = 0; i < HK_MAX; i++) for (int i = 0; i < HK_MAX; i++)
{ {
Hotkeys[i].readConfig(); Hotkeys[i].readConfig();
//g_config->getOption (prefix + Hotkeys[i].getConfigName(), &keyText);
//j=0;
//while ( keyText[j] != 0 )
//{
// while ( isspace(keyText[j]) ) j++;
// if ( isalpha( keyText[j] ) || (keyText[j] == '_') )
// {
// k=0;
// while ( isalnum( keyText[j] ) || (keyText[j] == '_') )
// {
// id[k] = keyText[j]; j++; k++;
// }
// id[k] = 0;
// if ( keyText[j] != '=' )
// {
// printf("Error: Invalid Hot Key Config for %s = %s \n", getHotkeyString(i), keyText.c_str() );
// break;
// }
// j++;
// k=0;
// while ( !isspace(keyText[j]) && (keyText[j] != 0) )
// {
// val[k] = keyText[j]; j++; k++;
// }
// val[k] = 0;
// //printf("ID:%s Val:%s \n", id, val );
// if ( strcmp( id, "key" ) == 0 )
// {
// Hotkeys[i].sdl.value = SDL_GetKeyFromName( val );
// }
// else if ( strcmp( id, "mod" ) == 0 )
// {
// Hotkeys[i].setModifierFromString( val );
// }
// }
// else
// {
// break;
// }
//}
} }
return; return;
} }
@ -730,7 +675,7 @@ unsigned int *GetKeyboard(void)
*/ */
static void KeyboardCommands (void) static void KeyboardCommands (void)
{ {
int is_shift, is_alt; //int is_shift, is_alt;
// get the keyboard input // get the keyboard input
@ -749,33 +694,33 @@ static void KeyboardCommands (void)
} }
} }
if (g_keyState[SDL_SCANCODE_LSHIFT] || g_keyState[SDL_SCANCODE_RSHIFT]) //if (g_keyState[SDL_SCANCODE_LSHIFT] || g_keyState[SDL_SCANCODE_RSHIFT])
{ //{
is_shift = 1; // is_shift = 1;
} //}
else //else
{ //{
is_shift = 0; // is_shift = 0;
} //}
if (g_keyState[SDL_SCANCODE_LALT] || g_keyState[SDL_SCANCODE_RALT]) //if (g_keyState[SDL_SCANCODE_LALT] || g_keyState[SDL_SCANCODE_RALT])
{ //{
is_alt = 1; // is_alt = 1;
} //}
else //else
{ //{
is_alt = 0; // is_alt = 0;
} //}
if ( Hotkeys[HK_TOGGLE_BG].getRisingEdge() ) //if ( Hotkeys[HK_TOGGLE_BG].getRisingEdge() )
{ //{
bool fgOn, bgOn; // bool fgOn, bgOn;
FCEUI_GetRenderPlanes( fgOn, bgOn ); // FCEUI_GetRenderPlanes( fgOn, bgOn );
FCEUI_SetRenderPlanes( fgOn, !bgOn ); // FCEUI_SetRenderPlanes( fgOn, !bgOn );
} //}
// Alt-Enter to toggle full-screen // Alt-Enter to toggle full-screen
// This is already handled by Qt Menu Actions // This is already handled by Qt Menu Actions
@ -807,108 +752,108 @@ static void KeyboardCommands (void)
//} //}
// Toggle Movie auto-backup // Toggle Movie auto-backup
if ( is_shift ) //if ( is_shift )
{ //{
if (keyonly (M)) // if (keyonly (M))
{ // {
autoMovieBackup ^= 1; // autoMovieBackup ^= 1;
FCEUI_DispMessage ("Automatic movie backup %sabled.", 0, // FCEUI_DispMessage ("Automatic movie backup %sabled.", 0,
autoMovieBackup ? "en" : "dis"); // autoMovieBackup ? "en" : "dis");
} // }
} //}
if ( is_alt ) //if ( is_alt )
{ //{
// Start recording an FM2 movie on Alt+R // // Start recording an FM2 movie on Alt+R
if (keyonly (R)) // if (keyonly (R))
{ // {
FCEUD_MovieRecordTo (); // FCEUD_MovieRecordTo ();
} // }
// Save a state from a file // // Save a state from a file
if (keyonly (S)) // if (keyonly (S))
{ // {
FCEUD_SaveStateAs (); // FCEUD_SaveStateAs ();
} // }
// Load a state from a file // // Load a state from a file
if (keyonly (L)) // if (keyonly (L))
{ // {
FCEUD_LoadStateFrom (); // FCEUD_LoadStateFrom ();
} // }
} //}
// Famicom disk-system games // Famicom disk-system games
if (gametype == GIT_FDS) // if (gametype == GIT_FDS)
{ // {
if ( Hotkeys[HK_FDS_SELECT].getRisingEdge() ) // if ( Hotkeys[HK_FDS_SELECT].getRisingEdge() )
{ // {
FCEUI_FDSSelect (); // FCEUI_FDSSelect ();
} // }
if ( Hotkeys[HK_FDS_EJECT].getRisingEdge() ) // if ( Hotkeys[HK_FDS_EJECT].getRisingEdge() )
{ // {
FCEUI_FDSInsert (); // FCEUI_FDSInsert ();
} // }
} // }
//
if ( Hotkeys[HK_SCREENSHOT].getRisingEdge() ) // if ( Hotkeys[HK_SCREENSHOT].getRisingEdge() )
{ // {
FCEUI_SaveSnapshot (); // FCEUI_SaveSnapshot ();
} // }
// if not NES Sound Format // if not NES Sound Format
if (gametype != GIT_NSF) // if (gametype != GIT_NSF)
{ // {
if ( Hotkeys[HK_CHEAT_MENU].getRisingEdge() ) // if ( Hotkeys[HK_CHEAT_MENU].getRisingEdge() )
{ // {
openCheatDialog( consoleWindow ); // openCheatDialog( consoleWindow );
} // }
//
// f5 (default) save key, hold shift to save movie // // f5 (default) save key, hold shift to save movie
if ( Hotkeys[HK_SAVE_STATE].getRisingEdge() ) // if ( Hotkeys[HK_SAVE_STATE].getRisingEdge() )
{ // {
if (is_shift) // if (is_shift)
{ // {
std::string movie_fname = FCEU_MakeFName (FCEUMKF_MOVIE, 0, 0); // std::string movie_fname = FCEU_MakeFName (FCEUMKF_MOVIE, 0, 0);
FCEUI_printf ("Recording movie to %s\n", movie_fname.c_str() ); // FCEUI_printf ("Recording movie to %s\n", movie_fname.c_str() );
FCEUI_SaveMovie(movie_fname.c_str() , MOVIE_FLAG_NONE, L""); // FCEUI_SaveMovie(movie_fname.c_str() , MOVIE_FLAG_NONE, L"");
} // }
else // else
{ // {
FCEUI_SaveState (NULL); // FCEUI_SaveState (NULL);
} // }
} // }
//
// f7 to load state, Shift-f7 to load movie // // f7 to load state, Shift-f7 to load movie
if ( Hotkeys[HK_LOAD_STATE].getRisingEdge() ) // if ( Hotkeys[HK_LOAD_STATE].getRisingEdge() )
{ // {
if (is_shift) // if (is_shift)
{ // {
FCEUI_StopMovie (); // FCEUI_StopMovie ();
std::string fname; // std::string fname;
fname = // fname =
GetFilename ("Open FM2 movie for playback...", false, // GetFilename ("Open FM2 movie for playback...", false,
"FM2 movies|*.fm2"); // "FM2 movies|*.fm2");
if (fname != "") // if (fname != "")
{ // {
if (fname.find (".fm2") != std::string::npos // if (fname.find (".fm2") != std::string::npos
|| fname.find (".fm3") != std::string::npos) // || fname.find (".fm3") != std::string::npos)
{ // {
FCEUI_printf ("Playing back movie located at %s\n", // FCEUI_printf ("Playing back movie located at %s\n",
fname.c_str ()); // fname.c_str ());
FCEUI_LoadMovie (fname.c_str (), false, false); // FCEUI_LoadMovie (fname.c_str (), false, false);
} // }
else // else
{ // {
FCEUI_printf // FCEUI_printf
("Only .fm2 and .fm3 movies are supported.\n"); // ("Only .fm2 and .fm3 movies are supported.\n");
} // }
} // }
} // }
else // else
{ // {
FCEUI_LoadState(NULL); // FCEUI_LoadState(NULL);
} // }
} // }
} // }
//if ( Hotkeys[HK_DECREASE_SPEED].getRisingEdge() ) //if ( Hotkeys[HK_DECREASE_SPEED].getRisingEdge() )
@ -1139,25 +1084,26 @@ static void KeyboardCommands (void)
// { // {
// barcoder = 0; // barcoder = 0;
// } // }
// /*
//#define SSM(x) \ #define SSM(x)
//do { \ do { \
// if(barcoder) { \ if(barcoder) { \
// if(bbuft < 13) { \ if(bbuft < 13) { \
// bbuf[bbuft++] = '0' + x; \ bbuf[bbuft++] = '0' + x; \
// bbuf[bbuft] = 0; \ bbuf[bbuft] = 0; \
// } \ } \
// FCEUI_DispMessage("Barcode: %s",0, bbuf); \ FCEUI_DispMessage("Barcode: %s",0, bbuf); \
// } \ } \
//} while(0) } while(0)
//
// DIPSless: DIPSless:
// for(int i=0; i<10;i++) for(int i=0; i<10;i++)
// { {
// if (keyonly (i)) if (keyonly (i))
// SSM (i); SSM (i);
// } }
//#undef SSM #undef SSM
*/
// } // }
} }