Allow the windows and menu keys to be mappable on Linux and Windows.
Fixes bug 406 on sf.net and topic 380510 on vogons. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3870
This commit is contained in:
parent
730c2d3cd9
commit
2077da8e29
1 changed files with 36 additions and 8 deletions
|
@ -361,7 +361,7 @@ typedef char assert_right_size [MAX_SCANCODES == (sizeof(sdlkey_map)/sizeof(sdlk
|
|||
|
||||
#else // !MACOSX
|
||||
|
||||
#define MAX_SCANCODES 212
|
||||
#define MAX_SCANCODES 0xdf
|
||||
static SDLKey sdlkey_map[MAX_SCANCODES]={SDLK_UNKNOWN,SDLK_ESCAPE,
|
||||
SDLK_1,SDLK_2,SDLK_3,SDLK_4,SDLK_5,SDLK_6,SDLK_7,SDLK_8,SDLK_9,SDLK_0,
|
||||
/* 0x0c: */
|
||||
|
@ -380,13 +380,28 @@ static SDLKey sdlkey_map[MAX_SCANCODES]={SDLK_UNKNOWN,SDLK_ESCAPE,
|
|||
SDLK_KP7,SDLK_KP8,SDLK_KP9,SDLK_KP_MINUS,SDLK_KP4,SDLK_KP5,SDLK_KP6,SDLK_KP_PLUS,
|
||||
SDLK_KP1,SDLK_KP2,SDLK_KP3,SDLK_KP0,SDLK_KP_PERIOD,
|
||||
SDLK_UNKNOWN,SDLK_UNKNOWN,
|
||||
SDLK_LESS,SDLK_F11,SDLK_F12,
|
||||
Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,
|
||||
Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,
|
||||
Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,
|
||||
/* 0xb7: */
|
||||
Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z
|
||||
/* 0xd4: ... */
|
||||
SDLK_LESS,SDLK_F11,SDLK_F12, Z, Z, Z, Z, Z, Z, Z,
|
||||
/* 0x60: */
|
||||
Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z,
|
||||
/* 0x70: */
|
||||
Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z,
|
||||
/* 0x80: */
|
||||
Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z,
|
||||
/* 0x90: */
|
||||
Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z,
|
||||
/* 0xA0: */
|
||||
Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z,
|
||||
/* 0xB0: */
|
||||
Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z,
|
||||
/* 0xC0: */
|
||||
Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z,
|
||||
/* 0xD0: */
|
||||
Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z//,Z,Z,
|
||||
/* 0xE0: */
|
||||
//Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z,
|
||||
/* 0xF0: */
|
||||
// Z,Z,Z,Z, Z,Z,Z,Z, Z,Z,Z,Z, Z,Z//,Z,Z
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -394,6 +409,7 @@ static SDLKey sdlkey_map[MAX_SCANCODES]={SDLK_UNKNOWN,SDLK_ESCAPE,
|
|||
|
||||
|
||||
SDLKey MapSDLCode(Bitu skey) {
|
||||
// LOG_MSG("MapSDLCode %d %X",skey,skey);
|
||||
if (usescancodes) {
|
||||
if (skey<MAX_SCANCODES) return sdlkey_map[skey];
|
||||
else return SDLK_UNKNOWN;
|
||||
|
@ -401,6 +417,7 @@ SDLKey MapSDLCode(Bitu skey) {
|
|||
}
|
||||
|
||||
Bitu GetKeyCode(SDL_keysym keysym) {
|
||||
// LOG_MSG("GetKeyCode %X %X %X",keysym.scancode,keysym.sym,keysym.mod);
|
||||
if (usescancodes) {
|
||||
Bitu key=(Bitu)keysym.scancode;
|
||||
if (key==0
|
||||
|
@ -2471,6 +2488,11 @@ void MAPPER_StartUp(Section * sec) {
|
|||
sdlkey_map[0x77]=SDLK_PAUSE;
|
||||
sdlkey_map[0x63]=SDLK_PRINT;
|
||||
sdlkey_map[0x64]=SDLK_RALT;
|
||||
|
||||
//Win-keys
|
||||
sdlkey_map[0x7d]=SDLK_LSUPER;
|
||||
sdlkey_map[0x7e]=SDLK_RSUPER;
|
||||
sdlkey_map[0x7f]=SDLK_MENU;
|
||||
} else {
|
||||
sdlkey_map[0x5a]=SDLK_UP;
|
||||
sdlkey_map[0x60]=SDLK_DOWN;
|
||||
|
@ -2506,6 +2528,12 @@ void MAPPER_StartUp(Section * sec) {
|
|||
sdlkey_map[0xc5]=SDLK_PAUSE;
|
||||
sdlkey_map[0xb7]=SDLK_PRINT;
|
||||
sdlkey_map[0xb8]=SDLK_RALT;
|
||||
|
||||
//Win-keys
|
||||
sdlkey_map[0xdb]=SDLK_LMETA;
|
||||
sdlkey_map[0xdc]=SDLK_RMETA;
|
||||
sdlkey_map[0xdd]=SDLK_MENU;
|
||||
|
||||
#endif
|
||||
|
||||
Bitu i;
|
||||
|
|
Loading…
Add table
Reference in a new issue