Added code to fix Qt key sequences to avoid impossible combinations.
This commit is contained in:
parent
7acaf7f2bd
commit
e0f5c3c58e
|
@ -726,6 +726,9 @@ void consoleWin_t::createMainMenu(void)
|
||||||
connect( Hotkeys[ HK_SELECT_STATE_8 ].getShortcut(), SIGNAL(activated()), this, SLOT(changeState8(void)) );
|
connect( Hotkeys[ HK_SELECT_STATE_8 ].getShortcut(), SIGNAL(activated()), this, SLOT(changeState8(void)) );
|
||||||
connect( Hotkeys[ HK_SELECT_STATE_9 ].getShortcut(), SIGNAL(activated()), this, SLOT(changeState9(void)) );
|
connect( Hotkeys[ HK_SELECT_STATE_9 ].getShortcut(), SIGNAL(activated()), this, SLOT(changeState9(void)) );
|
||||||
|
|
||||||
|
connect( Hotkeys[ HK_SELECT_STATE_PREV ].getShortcut(), SIGNAL(activated()), this, SLOT(decrementState(void)) );
|
||||||
|
connect( Hotkeys[ HK_SELECT_STATE_NEXT ].getShortcut(), SIGNAL(activated()), this, SLOT(incrementState(void)) );
|
||||||
|
|
||||||
#ifdef _S9XLUA_H
|
#ifdef _S9XLUA_H
|
||||||
// File -> Quick Save
|
// File -> Quick Save
|
||||||
loadLuaAct = new QAction(tr("Load &Lua Script"), this);
|
loadLuaAct = new QAction(tr("Load &Lua Script"), this);
|
||||||
|
@ -2053,6 +2056,20 @@ void consoleWin_t::changeState9(void)
|
||||||
fceuWrapperUnLock();
|
fceuWrapperUnLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void consoleWin_t::incrementState(void)
|
||||||
|
{
|
||||||
|
fceuWrapperLock();
|
||||||
|
FCEUI_SelectStateNext(1);
|
||||||
|
fceuWrapperUnLock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void consoleWin_t::decrementState(void)
|
||||||
|
{
|
||||||
|
fceuWrapperLock();
|
||||||
|
FCEUI_SelectStateNext(-1);
|
||||||
|
fceuWrapperUnLock();
|
||||||
|
}
|
||||||
|
|
||||||
void consoleWin_t::takeScreenShot(void)
|
void consoleWin_t::takeScreenShot(void)
|
||||||
{
|
{
|
||||||
fceuWrapperLock();
|
fceuWrapperLock();
|
||||||
|
|
|
@ -262,6 +262,8 @@ class consoleWin_t : public QMainWindow
|
||||||
void changeState7(void);
|
void changeState7(void);
|
||||||
void changeState8(void);
|
void changeState8(void);
|
||||||
void changeState9(void);
|
void changeState9(void);
|
||||||
|
void incrementState(void);
|
||||||
|
void decrementState(void);
|
||||||
void loadLua(void);
|
void loadLua(void);
|
||||||
void takeScreenShot(void);
|
void takeScreenShot(void);
|
||||||
void powerConsoleCB(void);
|
void powerConsoleCB(void);
|
||||||
|
|
|
@ -302,7 +302,8 @@ void HotKeyConfSetDialog_t::keyReleaseEvent(QKeyEvent *event)
|
||||||
void HotKeyConfSetDialog_t::assignHotkey(QKeyEvent *event)
|
void HotKeyConfSetDialog_t::assignHotkey(QKeyEvent *event)
|
||||||
{
|
{
|
||||||
bool keyIsModifier;
|
bool keyIsModifier;
|
||||||
QKeySequence ks( event->modifiers() + event->key() );
|
//QKeySequence ks( event->modifiers() + event->key() );
|
||||||
|
QKeySequence ks( convKeyEvent2Sequence(event) );
|
||||||
SDL_Keycode k = convQtKey2SDLKeyCode((Qt::Key)event->key());
|
SDL_Keycode k = convQtKey2SDLKeyCode((Qt::Key)event->key());
|
||||||
//SDL_Keymod m = convQtKey2SDLModifier(event->modifiers());
|
//SDL_Keymod m = convQtKey2SDLModifier(event->modifiers());
|
||||||
|
|
||||||
|
|
|
@ -1007,23 +1007,23 @@ static void KeyboardCommands (void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++)
|
//for (int i = 0; i < 10; i++)
|
||||||
{
|
//{
|
||||||
if ( Hotkeys[HK_SELECT_STATE_0 + i].getRisingEdge() )
|
// if ( Hotkeys[HK_SELECT_STATE_0 + i].getRisingEdge() )
|
||||||
{
|
// {
|
||||||
FCEUI_SelectState (i, 1);
|
// FCEUI_SelectState (i, 1);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
if ( Hotkeys[HK_SELECT_STATE_NEXT].getRisingEdge() )
|
//if ( Hotkeys[HK_SELECT_STATE_NEXT].getRisingEdge() )
|
||||||
{
|
//{
|
||||||
FCEUI_SelectStateNext (1);
|
// FCEUI_SelectStateNext (1);
|
||||||
}
|
//}
|
||||||
|
|
||||||
if ( Hotkeys[HK_SELECT_STATE_PREV].getRisingEdge() )
|
//if ( Hotkeys[HK_SELECT_STATE_PREV].getRisingEdge() )
|
||||||
{
|
//{
|
||||||
FCEUI_SelectStateNext (-1);
|
// FCEUI_SelectStateNext (-1);
|
||||||
}
|
//}
|
||||||
|
|
||||||
if ( Hotkeys[HK_BIND_STATE].getRisingEdge() )
|
if ( Hotkeys[HK_BIND_STATE].getRisingEdge() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -876,9 +876,9 @@ SDL_Keycode convQtKey2SDLKeyCode(Qt::Key q)
|
||||||
case Key_BracketRight:
|
case Key_BracketRight:
|
||||||
s = SDLK_RIGHTBRACKET;
|
s = SDLK_RIGHTBRACKET;
|
||||||
break;
|
break;
|
||||||
//case Key_AsciiCircum:
|
case Key_AsciiCircum:
|
||||||
// s = SDLK_CARET;
|
s = SDLK_CARET;
|
||||||
//break;
|
break;
|
||||||
case Key_Underscore:
|
case Key_Underscore:
|
||||||
s = SDLK_UNDERSCORE;
|
s = SDLK_UNDERSCORE;
|
||||||
break;
|
break;
|
||||||
|
@ -995,6 +995,74 @@ SDL_Keymod convQtKey2SDLModifier(Qt::KeyboardModifiers m)
|
||||||
return (SDL_Keymod)s;
|
return (SDL_Keymod)s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int convKeyEvent2Sequence( QKeyEvent *event )
|
||||||
|
{
|
||||||
|
int k, m;
|
||||||
|
|
||||||
|
k = event->key();
|
||||||
|
m = event->modifiers();
|
||||||
|
|
||||||
|
printf("Key: %x Modifier: %x \n", k, m );
|
||||||
|
|
||||||
|
switch ( k )
|
||||||
|
{
|
||||||
|
case Qt::Key_Tab:
|
||||||
|
case Qt::Key_Backtab:
|
||||||
|
case Qt::Key_Space:
|
||||||
|
case Qt::Key_Exclam:
|
||||||
|
case Qt::Key_QuoteDbl:
|
||||||
|
case Qt::Key_NumberSign:
|
||||||
|
case Qt::Key_Dollar:
|
||||||
|
case Qt::Key_Percent:
|
||||||
|
case Qt::Key_Ampersand:
|
||||||
|
case Qt::Key_Apostrophe:
|
||||||
|
case Qt::Key_ParenLeft:
|
||||||
|
case Qt::Key_ParenRight:
|
||||||
|
case Qt::Key_Asterisk:
|
||||||
|
case Qt::Key_Plus:
|
||||||
|
case Qt::Key_Comma:
|
||||||
|
case Qt::Key_Minus:
|
||||||
|
case Qt::Key_Period:
|
||||||
|
case Qt::Key_Slash:
|
||||||
|
case Qt::Key_0:
|
||||||
|
case Qt::Key_1:
|
||||||
|
case Qt::Key_2:
|
||||||
|
case Qt::Key_3:
|
||||||
|
case Qt::Key_4:
|
||||||
|
case Qt::Key_5:
|
||||||
|
case Qt::Key_6:
|
||||||
|
case Qt::Key_7:
|
||||||
|
case Qt::Key_8:
|
||||||
|
case Qt::Key_9:
|
||||||
|
case Qt::Key_Colon:
|
||||||
|
case Qt::Key_Semicolon:
|
||||||
|
case Qt::Key_Less:
|
||||||
|
case Qt::Key_Equal:
|
||||||
|
case Qt::Key_Greater:
|
||||||
|
case Qt::Key_Question:
|
||||||
|
case Qt::Key_At:
|
||||||
|
case Qt::Key_BracketLeft:
|
||||||
|
case Qt::Key_Backslash:
|
||||||
|
case Qt::Key_BracketRight:
|
||||||
|
case Qt::Key_AsciiCircum:
|
||||||
|
case Qt::Key_Underscore:
|
||||||
|
case Qt::Key_QuoteLeft:
|
||||||
|
case Qt::Key_BraceLeft:
|
||||||
|
case Qt::Key_Bar:
|
||||||
|
case Qt::Key_BraceRight:
|
||||||
|
case Qt::Key_AsciiTilde:
|
||||||
|
// With these keys, the shift modifier can be implied and
|
||||||
|
// should not be included in the output. Doing so may create
|
||||||
|
// an impossible double shifted key sequence.
|
||||||
|
m &= ~Qt::ShiftModifier;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// Leave Modifier Unchanged
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return (m | k);
|
||||||
|
}
|
||||||
|
|
||||||
int pushKeyEvent(QKeyEvent *event, int pressDown)
|
int pushKeyEvent(QKeyEvent *event, int pressDown)
|
||||||
{
|
{
|
||||||
SDL_Event sdlev;
|
SDL_Event sdlev;
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
|
|
||||||
#include <QtCore>
|
#include <QtCore>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
|
#include <QKeySequence>
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
SDL_Keycode convQtKey2SDLKeyCode( Qt::Key q );
|
SDL_Keycode convQtKey2SDLKeyCode( Qt::Key q );
|
||||||
|
@ -53,4 +54,6 @@ SDL_Scancode convQtKey2SDLScanCode( Qt::Key q );
|
||||||
|
|
||||||
SDL_Keymod convQtKey2SDLModifier( Qt::KeyboardModifiers m );
|
SDL_Keymod convQtKey2SDLModifier( Qt::KeyboardModifiers m );
|
||||||
|
|
||||||
|
int convKeyEvent2Sequence( QKeyEvent *event );
|
||||||
|
|
||||||
int pushKeyEvent( QKeyEvent *event, int pressDown );
|
int pushKeyEvent( QKeyEvent *event, int pressDown );
|
||||||
|
|
Loading…
Reference in New Issue