phasing out SDL_keysym.h

This commit is contained in:
Glenn Maynard
2004-06-16 20:26:45 +00:00
parent 97b803c102
commit 98ecd82db5
7 changed files with 573 additions and 37 deletions
+2 -2
View File
@@ -1,4 +1,5 @@
#include "global.h"
#define COMPAT_KEYSYMS
#include "GameManager.h"
#include "PrefsManager.h"
#include "GameConstantsAndTypes.h"
@@ -8,11 +9,10 @@
#include "RageLog.h"
#include "RageUtil.h"
#include "NoteSkinManager.h"
#include "SDL_keysym.h" // for SDLKeys
#include "RageInputDevice.h"
#include "ThemeManager.h"
#include "LightsManager.h" // for NUM_CABINET_LIGHTS
GameManager* GAMEMAN = NULL; // global and accessable from anywhere in our program
+91 -2
View File
@@ -7,7 +7,7 @@
#include "RageInputDevice.h"
#include "RageUtil.h"
#include "SDL_keyboard.h"
//#include "SDL_keyboard.h"
static const char *PumpButtonNames[] = {
"UL", "UR", "MID", "DL", "DR", "Esc",
@@ -132,8 +132,97 @@ CString DeviceInput::GetDescription()
break;
case DEVICE_KEYBOARD: // keyboard
sReturn = ssprintf("Key %s", SDL_GetKeyName((SDLKey)button) );
sReturn = "Key ";
if( button >= 33 && button < 127 &&
!(button >= 'A' && button <= 'Z' ) )
{
/* All printable ASCII except for uppercase alpha characters line up. */
sReturn += ssprintf( "%c", button );
break;
}
if( button >= KEY_OTHER_0 && button < KEY_LAST_OTHER )
{
sReturn += ssprintf( "unk %i", button-KEY_OTHER_0 );
break;
}
switch( button )
{
case KEY_SPACE: sReturn += "space"; break;
case KEY_DEL: sReturn += "delete"; break;
case KEY_BACK: sReturn += "backspace"; break;
case KEY_TAB: sReturn += "tab"; break;
case KEY_ENTER: sReturn += "enter"; break;
case KEY_PAUSE: sReturn += "pause"; break;
case KEY_ESC: sReturn += "escape"; break;
case KEY_F1: sReturn += "F1"; break;
case KEY_F2: sReturn += "F2"; break;
case KEY_F3: sReturn += "F3"; break;
case KEY_F4: sReturn += "F4"; break;
case KEY_F5: sReturn += "F5"; break;
case KEY_F6: sReturn += "F6"; break;
case KEY_F7: sReturn += "F7"; break;
case KEY_F8: sReturn += "F8"; break;
case KEY_F9: sReturn += "F9"; break;
case KEY_F10: sReturn += "F10"; break;
case KEY_F11: sReturn += "F11"; break;
case KEY_F12: sReturn += "F12"; break;
case KEY_F13: sReturn += "F13"; break;
case KEY_F14: sReturn += "F14"; break;
case KEY_F15: sReturn += "F15"; break;
case KEY_F16: sReturn += "F16"; break;
case KEY_LCTRL: sReturn += "left ctrl"; break;
case KEY_RCTRL: sReturn += "right ctrl"; break;
case KEY_LSHIFT: sReturn += "left shift"; break;
case KEY_RSHIFT: sReturn += "right shift"; break;
case KEY_LALT: sReturn += "left alt"; break;
case KEY_RALT: sReturn += "right alt"; break;
case KEY_LMETA: sReturn += "left meta"; break;
case KEY_RMETA: sReturn += "right meta"; break;
case KEY_LSUPER: sReturn += "left wnd"; break;
case KEY_RSUPER: sReturn += "right wnd"; break;
case KEY_MENU: sReturn += "menu"; break;
case KEY_NUMLOCK: sReturn += "num lock"; break;
case KEY_SCRLLOCK: sReturn += "scroll lock"; break;
case KEY_CAPSLOCK: sReturn += "caps lock"; break;
case KEY_PRTSC: sReturn += "prtsc"; break;
case KEY_UP: sReturn += "up"; break;
case KEY_DOWN: sReturn += "down"; break;
case KEY_LEFT: sReturn += "left"; break;
case KEY_RIGHT: sReturn += "right"; break;
case KEY_INSERT: sReturn += "insert"; break;
case KEY_HOME: sReturn += "home"; break;
case KEY_END: sReturn += "end"; break;
case KEY_PGUP: sReturn += "pgup"; break;
case KEY_PGDN: sReturn += "pgdn"; break;
case KEY_KP_C0: sReturn += "KP 0"; break;
case KEY_KP_C1: sReturn += "KP 1"; break;
case KEY_KP_C2: sReturn += "KP 2"; break;
case KEY_KP_C3: sReturn += "KP 3"; break;
case KEY_KP_C4: sReturn += "KP 4"; break;
case KEY_KP_C5: sReturn += "KP 5"; break;
case KEY_KP_C6: sReturn += "KP 6"; break;
case KEY_KP_C7: sReturn += "KP 7"; break;
case KEY_KP_C8: sReturn += "KP 8"; break;
case KEY_KP_C9: sReturn += "KP 9"; break;
case KEY_KP_SLASH: sReturn += "KP /"; break;
case KEY_KP_ASTERISK: sReturn += "KP *"; break;
case KEY_KP_HYPHEN: sReturn += "KP -"; break;
case KEY_KP_PLUS: sReturn += "KP +"; break;
case KEY_KP_PERIOD: sReturn += "KP ."; break;
case KEY_KP_ENTER: sReturn += "KP enter"; break;
default: sReturn += "unknown"; break;
}
break;
default:
ASSERT(0); // what device is this?
}
+348 -2
View File
@@ -1,10 +1,356 @@
#ifndef RAGEINPUTDEVICE_H
#define RAGEINPUTDEVICE_H 1
#include "SDL_keysym.h"
// #include "SDL_keysym.h"
#include "RageTimer.h"
const int NUM_KEYBOARD_BUTTONS = SDLK_LAST;
/* Only raw, unshifted keys go in this table; this doesn't include internationalized
* keyboards, only keys that we might actually want to test for programmatically. Any
* other keys are mapped to KEY_OTHER_0 and up. (If we want to support real international
* input, stick a wchar_t in DeviceInput.) */
enum RageKeySym
{
KEY_SPACE = 32,
KEY_EXCL = 33,
KEY_QUOTE = 34,
KEY_HASH = 35,
KEY_DOLLAR = 36,
KEY_PERCENT = 37,
KEY_AMPER = 38,
KEY_SQUOTE = 39,
KEY_LPAREN = 40,
KEY_RPAREN = 41,
KEY_ASTERISK= 42,
KEY_PLUS = 43,
KEY_COMMA = 44,
KEY_HYPHEN = 45,
KEY_PERIOD = 46,
KEY_SLASH = 47,
KEY_C0 = 48,
KEY_C1 = 49,
KEY_C2 = 50,
KEY_C3 = 51,
KEY_C4 = 52,
KEY_C5 = 53,
KEY_C6 = 54,
KEY_C7 = 55,
KEY_C8 = 56,
KEY_C9 = 57,
KEY_COLON = 58,
KEY_SEMICOLON = 59,
KEY_LANGLE = 60,
KEY_EQUAL = 61,
KEY_RANGLE = 62,
KEY_QUESTION= 63,
KEY_AT = 64,
KEY_CA = 65,
KEY_CB = 66,
KEY_CC = 67,
KEY_CD = 68,
KEY_CE = 69,
KEY_CF = 70,
KEY_CG = 71,
KEY_CH = 72,
KEY_CI = 73,
KEY_CJ = 74,
KEY_CK = 75,
KEY_CL = 76,
KEY_CM = 77,
KEY_CN = 78,
KEY_CO = 79,
KEY_CP = 80,
KEY_CQ = 81,
KEY_CR = 82,
KEY_CS = 83,
KEY_CT = 84,
KEY_CU = 85,
KEY_CV = 86,
KEY_CW = 87,
KEY_CX = 88,
KEY_CY = 89,
KEY_CZ = 90,
KEY_LBRACKET= 91,
KEY_BACKSLASH= 92,
KEY_RBRACKET= 93,
KEY_CARAT = 94,
KEY_UNDERSCORE= 95,
KEY_ACCENT = 96,
KEY_Ca = 97,
KEY_Cb = 98,
KEY_Cc = 99,
KEY_Cd = 100,
KEY_Ce = 101,
KEY_Cf = 102,
KEY_Cg = 103,
KEY_Ch = 104,
KEY_Ci = 105,
KEY_Cj = 106,
KEY_Ck = 107,
KEY_Cl = 108,
KEY_Cm = 109,
KEY_Cn = 110,
KEY_Co = 111,
KEY_Cp = 112,
KEY_Cq = 113,
KEY_Cr = 114,
KEY_Cs = 115,
KEY_Ct = 116,
KEY_Cu = 117,
KEY_Cv = 118,
KEY_Cw = 119,
KEY_Cx = 120,
KEY_Cy = 121,
KEY_Cz = 122,
KEY_LBRACE = 123,
KEY_PIPE = 124,
KEY_RBRACE = 125,
KEY_DEL = 127,
KEY_BACK,
KEY_TAB,
KEY_ENTER,
KEY_PAUSE,
KEY_ESC,
KEY_F1,
KEY_F2,
KEY_F3,
KEY_F4,
KEY_F5,
KEY_F6,
KEY_F7,
KEY_F8,
KEY_F9,
KEY_F10,
KEY_F11,
KEY_F12,
KEY_F13,
KEY_F14,
KEY_F15,
KEY_F16,
KEY_LCTRL,
KEY_RCTRL,
KEY_LSHIFT,
KEY_RSHIFT,
KEY_LALT,
KEY_RALT,
KEY_LMETA,
KEY_RMETA,
KEY_LSUPER,
KEY_RSUPER,
KEY_MENU,
KEY_NUMLOCK,
KEY_SCRLLOCK,
KEY_CAPSLOCK,
KEY_PRTSC,
KEY_UP,
KEY_DOWN,
KEY_LEFT,
KEY_RIGHT,
KEY_INSERT,
KEY_HOME,
KEY_END,
KEY_PGUP,
KEY_PGDN,
KEY_KP_C0,
KEY_KP_C1,
KEY_KP_C2,
KEY_KP_C3,
KEY_KP_C4,
KEY_KP_C5,
KEY_KP_C6,
KEY_KP_C7,
KEY_KP_C8,
KEY_KP_C9,
KEY_KP_SLASH,
KEY_KP_ASTERISK,
KEY_KP_HYPHEN,
KEY_KP_PLUS,
KEY_KP_PERIOD,
KEY_KP_ENTER,
KEY_OTHER_0,
/* ... */
KEY_LAST_OTHER=512,
NUM_KEYS,
KEY_INVALID
};
#ifdef COMPAT_KEYSYMS
/* XXX: remove */
#define SDLK_FIRST 0
#define SDLK_LAST NUM_KEYS
#define SDLKey RageKeySym
#define SDLK_BACKSPACE KEY_BACK
#define SDLK_TAB KEY_TAB
#define SDLK_RETURN KEY_ENTER
#define SDLK_PAUSE KEY_PAUSE
#define SDLK_ESCAPE KEY_ESC
#define SDLK_SPACE KEY_SPACE
#define SDLK_EXCLAIM KEY_EXCL
#define SDLK_QUOTEDBL KEY_QUOTE
#define SDLK_HASH KEY_HASH
#define SDLK_DOLLAR KEY_DOLLAR
#define SDLK_AMPERSAND KEY_AMPER
#define SDLK_QUOTE KEY_SQUOTE
#define SDLK_LEFTPAREN KEY_LPAREN
#define SDLK_RIGHTPAREN KEY_RPAREN
#define SDLK_ASTERISK KEY_ASTERISK
#define SDLK_PLUS KEY_PLUS
#define SDLK_COMMA KEY_COMMA
#define SDLK_MINUS KEY_HYPHEN
#define SDLK_PERIOD KEY_PERIOD
#define SDLK_SLASH KEY_SLASH
#define SDLK_0 KEY_C0
#define SDLK_1 KEY_C1
#define SDLK_2 KEY_C2
#define SDLK_3 KEY_C3
#define SDLK_4 KEY_C4
#define SDLK_5 KEY_C5
#define SDLK_6 KEY_C6
#define SDLK_7 KEY_C7
#define SDLK_8 KEY_C8
#define SDLK_9 KEY_C9
#define SDLK_COLON KEY_COLON
#define SDLK_SEMICOLON KEY_SEMICOLON
#define SDLK_LESS KEY_LANGLE
#define SDLK_EQUALS KEY_EQUAL
#define SDLK_GREATER KEY_RANGLE
#define SDLK_QUESTION KEY_QUESTION
#define SDLK_AT KEY_AT
/*#define KEY_CA
#define KEY_CB
#define KEY_CC
#define KEY_CD
#define KEY_CE
#define KEY_CF
#define KEY_CG
#define KEY_CH
#define KEY_CI
#define KEY_CJ
#define KEY_CK
#define KEY_CL
#define KEY_CM
#define KEY_CN
#define KEY_CO
#define KEY_CP
#define KEY_CQ
#define KEY_CR
#define KEY_CS
#define KEY_CT
#define KEY_CU
#define KEY_CV
#define KEY_CW
#define KEY_CX
#define KEY_CY
#define KEY_CZ*/
#define SDLK_LEFTBRACKET KEY_LBRACKET
#define SDLK_BACKSLASH KEY_BACKSLASH
#define SDLK_RIGHTBRACKET KEY_RBRACKET
#define SDLK_CARET KEY_CARAT
#define SDLK_UNDERSCORE KEY_UNDERSCORE
#define SDLK_BACKQUOTE KEY_ACCENT
#define SDLK_a KEY_Ca
#define SDLK_b KEY_Cb
#define SDLK_c KEY_Cc
#define SDLK_d KEY_Cd
#define SDLK_e KEY_Ce
#define SDLK_f KEY_Cf
#define SDLK_g KEY_Cg
#define SDLK_h KEY_Ch
#define SDLK_i KEY_Ci
#define SDLK_j KEY_Cj
#define SDLK_k KEY_Ck
#define SDLK_l KEY_Cl
#define SDLK_m KEY_Cm
#define SDLK_n KEY_Cn
#define SDLK_o KEY_Co
#define SDLK_p KEY_Cp
#define SDLK_q KEY_Cq
#define SDLK_r KEY_Cr
#define SDLK_s KEY_Cs
#define SDLK_t KEY_Ct
#define SDLK_u KEY_Cu
#define SDLK_v KEY_Cv
#define SDLK_w KEY_Cw
#define SDLK_x KEY_Cx
#define SDLK_y KEY_Cy
#define SDLK_z KEY_Cz
#define KEY_PIPE
#define SDLK_DELETE KEY_DEL
#define SDLK_F1 KEY_F1
#define SDLK_F2 KEY_F2
#define SDLK_F3 KEY_F3
#define SDLK_F4 KEY_F4
#define SDLK_F5 KEY_F5
#define SDLK_F6 KEY_F6
#define SDLK_F7 KEY_F7
#define SDLK_F8 KEY_F8
#define SDLK_F9 KEY_F9
#define SDLK_F10 KEY_F10
#define SDLK_F11 KEY_F11
#define SDLK_F12 KEY_F12
#define SDLK_F13 KEY_F13
#define SDLK_F14 KEY_F14
#define SDLK_F15 KEY_F15
#define SDLK_LCTRL KEY_LCTRL
#define SDLK_RCTRL KEY_RCTRL
#define SDLK_LSHIFT KEY_LSHIFT
#define SDLK_RSHIFT KEY_RSHIFT
#define SDLK_LALT KEY_LALT
#define SDLK_RALT KEY_RALT
#define SDLK_LMETA KEY_LMETA
#define SDLK_RMETA KEY_RMETA
#define SDLK_LSUPER KEY_LSUPER
#define SDLK_RSUPER KEY_RSUPER
#define SDLK_MENU KEY_MENU
#define SDLK_NUMLOCK KEY_NUMLOCK
#define SDLK_SCROLLOCK KEY_SCRLLOCK
#define SDLK_CAPSLOCK KEY_CAPSLOCK
#define SDLK_PRINT KEY_PRTSC
#define SDLK_UP KEY_UP
#define SDLK_DOWN KEY_DOWN
#define SDLK_LEFT KEY_LEFT
#define SDLK_RIGHT KEY_RIGHT
#define SDLK_INSERT KEY_INSERT
#define SDLK_HOME KEY_HOME
#define SDLK_END KEY_END
#define SDLK_PAGEUP KEY_PGUP
#define SDLK_PAGEDOWN KEY_PGDN
#define SDLK_KP0 KEY_KP_C0
#define SDLK_KP1 KEY_KP_C1
#define SDLK_KP2 KEY_KP_C2
#define SDLK_KP3 KEY_KP_C3
#define SDLK_KP4 KEY_KP_C4
#define SDLK_KP5 KEY_KP_C5
#define SDLK_KP6 KEY_KP_C6
#define SDLK_KP7 KEY_KP_C7
#define SDLK_KP8 KEY_KP_C8
#define SDLK_KP9 KEY_KP_C9
#define SDLK_KP_DIVIDE KEY_KP_SLASH
#define SDLK_KP_MULTIPLY KEY_KP_ASTERISK
#define SDLK_KP_MINUS KEY_KP_HYPHEN
#define SDLK_KP_PLUS KEY_KP_PLUS
#define SDLK_KP_PERIOD KEY_KP_PERIOD
#define SDLK_KP_ENTER KEY_KP_ENTER
#endif
const int NUM_KEYBOARD_BUTTONS = NUM_KEYS;
const int NUM_JOYSTICKS = 6;
const int NUM_JOYSTICK_HATS = 1;
const int NUM_PUMPS = 2;
+2
View File
@@ -3,6 +3,8 @@
#ifndef SCREEN_H
#define SCREEN_H
#define COMPAT_KEYSYMS
#include "ActorFrame.h"
#include "ScreenMessage.h"
#include "InputFilter.h"
+24 -24
View File
@@ -1273,9 +1273,9 @@ bool HandleGlobalInputs( DeviceInput DeviceI, InputEventType type, GameInput Gam
return false; // Attract need to know because they go to TitleMenu on > 1 credit
}
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_F2))
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, KEY_F2))
{
if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_LSHIFT) ) )
if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT) ) )
{
// HACK: Also save bookkeeping and profile info for debugging
// so we don't have to play through a whole song to get new output.
@@ -1305,10 +1305,10 @@ bool HandleGlobalInputs( DeviceInput DeviceI, InputEventType type, GameInput Gam
return true;
}
#ifndef DARWIN
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_F4))
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, KEY_F4))
{
if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_RALT)) ||
INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_LALT)) )
if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_RALT)) ||
INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_LALT)) )
{
// pressed Alt+F4
ExitGame();
@@ -1316,10 +1316,10 @@ bool HandleGlobalInputs( DeviceInput DeviceI, InputEventType type, GameInput Gam
}
}
#else
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_q))
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, KEY_Cq))
{
if(INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_RMETA)) ||
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_LMETA)))
if(INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_RMETA)) ||
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_LMETA)))
{
// pressed CMD-Q
ExitGame();
@@ -1332,26 +1332,26 @@ bool HandleGlobalInputs( DeviceInput DeviceI, InputEventType type, GameInput Gam
* pressing PrntScrn, or will capture the foregroud with focus upon pressing
* Alt+PrntScrn. Windows will do this whether or not we save a screenshot
* ourself by dumping the frame buffer. */
/* Pressing F13 on an Apple keyboard sends SDLK_PRINT.
/* Pressing F13 on an Apple keyboard sends KEY_PRINT.
* However, notebooks don't have F13. Use cmd-F12 then*/
// "if pressing PrintScreen and not pressing Alt"
if( (DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_PRINT) &&
!INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_RALT)) &&
!INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_LALT))) ||
(DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_F12) &&
(INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_RMETA)) ||
INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_LMETA)))))
if( (DeviceI == DeviceInput(DEVICE_KEYBOARD, KEY_PRTSC) &&
!INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_RALT)) &&
!INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_LALT))) ||
(DeviceI == DeviceInput(DEVICE_KEYBOARD, KEY_F12) &&
(INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_RMETA)) ||
INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_LMETA)))))
{
// If holding LShift save uncompressed, else save compressed
bool bSaveCompressed = !INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_LSHIFT) );
bool bSaveCompressed = !INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT) );
SaveScreenshot( "Screenshots/", bSaveCompressed, false );
return true; // handled
}
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_RETURN))
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, KEY_ENTER))
{
if( INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_RALT)) ||
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_LALT)) )
if( INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_RALT)) ||
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_LALT)) )
{
/* alt-enter */
PREFSMAN->m_bWindowed = !PREFSMAN->m_bWindowed;
@@ -1360,7 +1360,7 @@ bool HandleGlobalInputs( DeviceInput DeviceI, InputEventType type, GameInput Gam
}
}
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_PAUSE))
if(DeviceI == DeviceInput(DEVICE_KEYBOARD, KEY_PAUSE))
{
static bool bMute = false;
bMute = !bMute;
@@ -1413,7 +1413,7 @@ static void HandleInputEvents(float fDeltaTime)
// Filter out all NumLock repeat messages
/* XXX: Is this still needed? If so, it should probably be done in the
* affected input driver. */
if( DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == SDLK_NUMLOCK && type != IET_FIRST_PRESS )
if( DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == KEY_NUMLOCK && type != IET_FIRST_PRESS )
continue; // skip
if( HandleGlobalInputs(DeviceI, type, GameI, MenuI, StyleI ) )
@@ -1475,13 +1475,13 @@ static void GameLoop()
CheckSkips( fDeltaTime );
if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_TAB) ) ) {
if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_BACKQUOTE) ) )
if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_TAB) ) ) {
if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_ACCENT) ) )
fDeltaTime = 0; /* both; stop time */
else
fDeltaTime *= 4;
}
else if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, SDLK_BACKQUOTE) ) )
else if( INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_ACCENT) ) )
{
fDeltaTime /= 4;
}
@@ -1,8 +1,9 @@
#include "global.h"
#include "SDL_utils.h"
#define COMPAT_KEYSYMS
#include "InputHandler_DirectInputHelper.h"
#include "RageUtil.h"
#include "RageLog.h"
#include "SDL_utils.h"
#pragma comment(lib, "dinput.lib")
#if defined(_WINDOWS)
@@ -15,6 +15,109 @@
#include "RageDisplay.h"
#include "PrefsManager.h"
static RageKeySym SDLSymToKeySym( SDLKey key )
{
#define KEY_INV KEY_INVALID
const RageKeySym ASCIIKeySyms[] =
{
KEY_INV, KEY_INV, KEY_INV, KEY_INV, /* 0-3 */
KEY_INV, KEY_INV, KEY_INV, KEY_INV, /* 4-7 */
KEY_BACK, KEY_TAB, KEY_INV, KEY_INV, /* 8-11 */
KEY_INV, KEY_ENTER, KEY_INV, KEY_INV, /* 12-15 */
KEY_INV, KEY_INV, KEY_INV, KEY_PAUSE, /* 16-19 */
KEY_INV, KEY_INV, KEY_INV, KEY_INV, /* 20-23 */
KEY_INV, KEY_INV, KEY_INV, KEY_ESC, /* 24-27 */
KEY_INV, KEY_INV, KEY_INV, KEY_INV, /* 28-31 */
KEY_SPACE, KEY_EXCL, KEY_QUOTE, KEY_HASH, /* 32-35 */
KEY_DOLLAR, KEY_PERCENT,KEY_AMPER, KEY_SQUOTE, /* 36-39 */
KEY_LPAREN, KEY_RPAREN, KEY_ASTERISK,KEY_PLUS, /* 40-43 */
KEY_COMMA, KEY_HYPHEN, KEY_PERIOD, KEY_SLASH, /* 44-47 */
KEY_C0, KEY_C1, KEY_C2, KEY_C3, /* 48-51 */
KEY_C4, KEY_C5, KEY_C6, KEY_C7, /* 52-55 */
KEY_C8, KEY_C9, KEY_COLON, KEY_SEMICOLON, /* 56-59 */
KEY_LANGLE, KEY_EQUAL, KEY_RANGLE, KEY_QUESTION, /* 60-63 */
KEY_AT, KEY_CA, KEY_CB, KEY_CC, KEY_CD, KEY_CE, KEY_CF, KEY_CG, KEY_CH, /* 64-72 */
KEY_CI, KEY_CJ, KEY_CK, KEY_CL, KEY_CM, KEY_CN, KEY_CO, KEY_CP, KEY_CQ, /* 73-81 */
KEY_CR, KEY_CS, KEY_CT, KEY_CU, KEY_CV, KEY_CW, KEY_CX, KEY_CY, KEY_CZ, /* 82-90 */
KEY_LBRACKET, KEY_BACKSLASH, KEY_RBRACKET, KEY_CARAT, /* 91-94 */
KEY_UNDERSCORE, KEY_ACCENT, KEY_Ca, KEY_Cb, /* 95-98 */
KEY_Cc, KEY_Cd, KEY_Ce, KEY_Cf, KEY_Cg, KEY_Ch, KEY_Ci, KEY_Cj, KEY_Ck, /* 99-107 */
KEY_Cl, KEY_Cm, KEY_Cn, KEY_Co, KEY_Cp, KEY_Cq, KEY_Cr, KEY_Cs, KEY_Ct, /* 108-116 */
KEY_Cu, KEY_Cv, KEY_Cw, KEY_Cx, KEY_Cy, KEY_Cz, /* 117-122 */
KEY_LBRACE, KEY_PIPE, KEY_RBRACE, KEY_INV, KEY_DEL /* 123-127 */
};
/* 0...127: */
if( key < ARRAYSIZE(ASCIIKeySyms) )
return ASCIIKeySyms[key];
/* SDLK_WORLD_0 ... SDLK_WORLD_95 to KEY_OTHER_0 ... KEY_OTHER_0 + 95 */
if( key >= SDLK_WORLD_0 && key <= SDLK_WORLD_95 )
return (RageKeySym) (key - SDLK_WORLD_0 + KEY_OTHER_0);
/* SDLK_KP0 ... SDLK_KP9 to KEY_KP_C0 ... KEY_KP_C9 */
if( key >= SDLK_KP0 && key <= SDLK_KP9 )
return (RageKeySym) (key - SDLK_KP0 + KEY_KP_C0);
switch( key )
{
case SDLK_KP_PERIOD: return KEY_KP_PERIOD;
case SDLK_KP_DIVIDE: return KEY_KP_SLASH;
case SDLK_KP_MULTIPLY: return KEY_KP_ASTERISK;
case SDLK_KP_MINUS: return KEY_KP_HYPHEN;
case SDLK_KP_PLUS: return KEY_KP_PLUS;
case SDLK_KP_ENTER: return KEY_KP_ENTER;
case SDLK_UP: return KEY_UP;
case SDLK_DOWN: return KEY_DOWN;
case SDLK_RIGHT: return KEY_RIGHT;
case SDLK_LEFT: return KEY_LEFT;
case SDLK_INSERT: return KEY_INSERT;
case SDLK_HOME: return KEY_HOME;
case SDLK_END: return KEY_END;
case SDLK_PAGEUP: return KEY_PGUP;
case SDLK_PAGEDOWN: return KEY_PGDN;
case SDLK_F1: return KEY_F1;
case SDLK_F2: return KEY_F2;
case SDLK_F3: return KEY_F3;
case SDLK_F4: return KEY_F4;
case SDLK_F5: return KEY_F5;
case SDLK_F6: return KEY_F6;
case SDLK_F7: return KEY_F7;
case SDLK_F8: return KEY_F8;
case SDLK_F9: return KEY_F9;
case SDLK_F10: return KEY_F10;
case SDLK_F11: return KEY_F11;
case SDLK_F12: return KEY_F12;
case SDLK_F13: return KEY_F13;
case SDLK_F14: return KEY_F14;
case SDLK_F15: return KEY_F15;
case SDLK_NUMLOCK: return KEY_NUMLOCK;
case SDLK_CAPSLOCK: return KEY_CAPSLOCK;
case SDLK_SCROLLOCK: return KEY_SCRLLOCK;
case SDLK_SYSREQ: return KEY_PRTSC;
case SDLK_PRINT: return KEY_PRTSC;
case SDLK_RSHIFT: return KEY_RSHIFT;
case SDLK_LSHIFT: return KEY_LSHIFT;
case SDLK_RCTRL: return KEY_RCTRL;
case SDLK_LCTRL: return KEY_LCTRL;
case SDLK_RALT: return KEY_RALT;
case SDLK_LALT: return KEY_LALT;
case SDLK_RMETA: return KEY_LMETA;
case SDLK_LMETA: return KEY_RMETA;
case SDLK_LSUPER: return KEY_LSUPER;
case SDLK_RSUPER: return KEY_RSUPER;
case SDLK_MENU: return KEY_MENU;
}
/* Map anything else to key+KEY_OTHER_0+95. */
if( key+KEY_OTHER_0+95 < KEY_LAST_OTHER )
return (RageKeySym) (key+KEY_OTHER_0+95);
return KEY_INVALID;
}
static const Sint8 Handled_SDL_Events[] = {
SDL_KEYDOWN, SDL_KEYUP, SDL_JOYBUTTONDOWN, SDL_JOYBUTTONUP,
SDL_JOYAXISMOTION, SDL_JOYHATMOTION, -1
@@ -103,12 +206,7 @@ void InputHandler_SDL::Update(float fDeltaTime)
case SDL_KEYDOWN:
case SDL_KEYUP:
{
DeviceInput di(DEVICE_KEYBOARD, event.key.keysym.sym);
/* SDL is inconsistent about this key: */
if( di.button == SDLK_SYSREQ )
di.button = SDLK_PRINT;
DeviceInput di( DEVICE_KEYBOARD, SDLSymToKeySym(event.key.keysym.sym) );
ButtonPressed(di, event.key.state == SDL_PRESSED);
}
continue;