diff --git a/include/keyboard.h b/include/keyboard.h index dc3574e4..da8037dc 100644 --- a/include/keyboard.h +++ b/include/keyboard.h @@ -36,6 +36,7 @@ enum KBD_KEYS { KBD_grave,KBD_minus,KBD_equals,KBD_backslash,KBD_leftbracket,KBD_rightbracket, KBD_semicolon,KBD_quote,KBD_period,KBD_comma,KBD_slash, + KBD_printscreen,KBD_pause, KBD_insert,KBD_home,KBD_pageup,KBD_delete,KBD_end,KBD_pagedown, KBD_left,KBD_up,KBD_down,KBD_right, diff --git a/include/mapper.h b/include/mapper.h index 24951ec4..27835661 100644 --- a/include/mapper.h +++ b/include/mapper.h @@ -21,7 +21,7 @@ enum MapKeys { MK_f1,MK_f2,MK_f3,MK_f4,MK_f5,MK_f6,MK_f7,MK_f8,MK_f9,MK_f10,MK_f11,MK_f12, - MK_return,MK_kpminus, + MK_return,MK_kpminus,MK_scrolllock,MK_printscreen,MK_pause, }; diff --git a/src/dos/dos_mscdex.cpp b/src/dos/dos_mscdex.cpp index 335584ba..d33f0d8b 100644 --- a/src/dos/dos_mscdex.cpp +++ b/src/dos/dos_mscdex.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: dos_mscdex.cpp,v 1.21 2004-06-09 09:11:55 qbix79 Exp $ */ +/* $Id: dos_mscdex.cpp,v 1.22 2004-06-30 14:40:07 qbix79 Exp $ */ #include #include @@ -601,9 +601,12 @@ bool CMscdex::GetDirectoryEntry(Bit16u drive, bool copyFlag, PhysPt pathname, Ph if (!ReadSectors(GetSubUnit(drive),false,dirEntrySector,1,defBuffer)) return false; // Get string part foundName = false; - useName = searchPos; - searchPos = strchr(searchPos,'\\'); - if (searchPos) { *searchPos = 0; searchPos++; } + if (searchPos) { + useName = searchPos; + searchPos = strchr(searchPos,'\\'); + } + + if (searchPos) { *searchPos = 0; searchPos++; } else foundComplete = true; do { @@ -622,7 +625,7 @@ bool CMscdex::GetDirectoryEntry(Bit16u drive, bool copyFlag, PhysPt pathname, Ph if (foundName) { // TO DO : name gefunden, Daten in den Buffer kopieren if (foundComplete) { - if (copyFlag) E_Exit("MSCDEX: GetDirEntry: Unsupported copyflag"); + if (copyFlag) LOG(LOG_MISC,LOG_ERROR)("MSCDEX: GetDirEntry: Unsupported copyflag. (result structure should be different"); // Direct copy MEM_BlockCopy(buffer,defBuffer+index,entryLength); error = iso ? 1:0; @@ -917,7 +920,7 @@ static bool MSCDEX_Handler(void) if (reg_ah!=0x15) return false; PhysPt data = PhysMake(SegValue(es),reg_bx); - MSCDEX_LOG("MSCDEX: INT 2F %04X",reg_ax); + MSCDEX_LOG("MSCDEX: INT 2F %04X BX= %04X CX=%04X",reg_ax,reg_bx,reg_bx); switch (reg_ax) { case 0x1500: /* Install check */ @@ -994,6 +997,7 @@ static bool MSCDEX_Handler(void) case 0x1510: /* Device driver request */ mscdex->SendDriverRequest(reg_cx,data); return true; + default : LOG(LOG_MISC,LOG_ERROR)("MSCDEX: Unknwon call : %04X",reg_ax); return true; diff --git a/src/gui/sdl_mapper.cpp b/src/gui/sdl_mapper.cpp index 1afa0eb1..95b3f44e 100644 --- a/src/gui/sdl_mapper.cpp +++ b/src/gui/sdl_mapper.cpp @@ -16,6 +16,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* $Id: sdl_mapper.cpp,v 1.5 2004-06-30 14:40:08 qbix79 Exp $ */ + #include #include #include @@ -432,6 +434,7 @@ void CBindGroup::ActivateBindList(CBindList * list,Bits value) { } } for (it=list->begin();it!=list->end();it++) { + /*BUG:CRASH if keymapper key is removed*/ if (validmod==(*it)->mods) (*it)->Activate(value); } } @@ -716,6 +719,15 @@ public: case MK_kpminus: key=SDLK_KP_MINUS; break; + case MK_scrolllock: + key=SDLK_SCROLLOCK; + break; + case MK_pause: + key=SDLK_PAUSE; + break; + case MK_printscreen: + key=SDLK_PRINT; + break; } sprintf(buf,"%s \"key %d%s%s%s\"", entry, @@ -878,7 +890,8 @@ static void CreateLayout(void) { /* Create the buttons for the Keyboard */ #define BW 28 #define BH 20 -#define PX(_X_) ((_X_)*BW) +#define DX 5 +#define PX(_X_) ((_X_)*BW + DX) #define PY(_Y_) (30+(_Y_)*BH) AddKeyButtonEvent(PX(0),PY(0),BW,BH,"ESC","esc",KBD_esc); for (i=0;i<12;i++) AddKeyButtonEvent(PX(2+i),PY(0),BW,BH,combo_f[i].title,combo_f[i].entry,combo_f[i].key); @@ -892,7 +905,7 @@ static void CreateLayout(void) { AddKeyButtonEvent(PX(0),PY(3),BW*2,BH,"CLCK","capslock",KBD_capslock); for (i=0;i<12;i++) AddKeyButtonEvent(PX(2+i),PY(3),BW,BH,combo_3[i].title,combo_3[i].entry,combo_3[i].key); - AddKeyButtonEvent(0,PY(4),BW*3,BH,"SHIFT","lshift",KBD_leftshift); + AddKeyButtonEvent(PX(0),PY(4),BW*3,BH,"SHIFT","lshift",KBD_leftshift); for (i=0;i<10;i++) AddKeyButtonEvent(PX(3+i),PY(4),BW,BH,combo_4[i].title,combo_4[i].entry,combo_4[i].key); AddKeyButtonEvent(PX(13),PY(4),BW*3,BH,"SHIFT","rshift",KBD_rightshift); @@ -904,12 +917,16 @@ static void CreateLayout(void) { AddKeyButtonEvent(PX(14),PY(5),BW*2,BH,"CTRL","rctrl",KBD_rightctrl); /* Arrow Keys */ - AddKeyButtonEvent(PX(0),PY(7),BW,BH,"INS","insert",KBD_insert); - AddKeyButtonEvent(PX(1),PY(7),BW,BH,"HOM","home",KBD_home); - AddKeyButtonEvent(PX(2),PY(7),BW,BH,"PUP","pageup",KBD_pageup); - AddKeyButtonEvent(PX(0),PY(8),BW,BH,"DEL","delete",KBD_delete); - AddKeyButtonEvent(PX(1),PY(8),BW,BH,"END","end",KBD_end); - AddKeyButtonEvent(PX(2),PY(8),BW,BH,"PDN","pagedown",KBD_pagedown); + + AddKeyButtonEvent(PX(0),PY(7),BW,BH,"PRT","printscreen",KBD_printscreen); + AddKeyButtonEvent(PX(1),PY(7),BW,BH,"SCL","scrolllock",KBD_scrolllock); + AddKeyButtonEvent(PX(2),PY(7),BW,BH,"PAU","pause",KBD_pause); + AddKeyButtonEvent(PX(0),PY(8),BW,BH,"INS","insert",KBD_insert); + AddKeyButtonEvent(PX(1),PY(8),BW,BH,"HOM","home",KBD_home); + AddKeyButtonEvent(PX(2),PY(8),BW,BH,"PUP","pageup",KBD_pageup); + AddKeyButtonEvent(PX(0),PY(9),BW,BH,"DEL","delete",KBD_delete); + AddKeyButtonEvent(PX(1),PY(9),BW,BH,"END","end",KBD_end); + AddKeyButtonEvent(PX(2),PY(9),BW,BH,"PDN","pagedown",KBD_pagedown); AddKeyButtonEvent(PX(1),PY(10),BW,BH,"\x18","up",KBD_up); AddKeyButtonEvent(PX(0),PY(11),BW,BH,"\x1B","left",KBD_left); AddKeyButtonEvent(PX(1),PY(11),BW,BH,"\x19","down",KBD_down); @@ -947,7 +964,9 @@ static void CreateLayout(void) { AddJButtonButton(PX(19),PY(3),BW,BH,"2" ,1,1); AddJAxisButton (PX(17),PY(4),BW,BH,"X-",1,false,false); AddJAxisButton (PX(18),PY(4),BW,BH,"Y+",1,true,true); - AddJAxisButton (PX(19),PY(4),BW,BH,"X+",1,false,true); /* The modifier buttons */ + AddJAxisButton (PX(19),PY(4),BW,BH,"X+",1,false,true); + + /* The modifier buttons */ AddModButton(PX(0),PY(13),50,20,"Mod1",1); AddModButton(PX(2),PY(13),50,20,"Mod2",2); AddModButton(PX(4),PY(13),50,20,"Mod3",3); @@ -961,8 +980,9 @@ static void CreateLayout(void) { } } /* Create some text buttons */ - new CTextButton(200,00,124,20,"Keyboard Layout"); - + new CTextButton(PX(6),00,124,20,"Keyboard Layout"); + new CTextButton(PX(16),00,124,20,"Joystick Layout"); + bind_but.action=new CCaptionButton(200,330,0,0); bind_but.event_title=new CCaptionButton(0,350,0,0); @@ -1045,7 +1065,8 @@ static struct { {"quote", SDLK_QUOTE}, {"backslash",SDLK_BACKSLASH}, {"lshift",SDLK_LSHIFT}, {"rshift",SDLK_RSHIFT}, {"lalt",SDLK_LALT}, {"ralt",SDLK_RALT}, {"lctrl",SDLK_LCTRL}, {"rctrl",SDLK_RCTRL}, {"comma",SDLK_COMMA}, - {"period",SDLK_PERIOD}, {"slash",SDLK_SLASH}, {"pagedown",SDLK_PAGEDOWN}, + {"period",SDLK_PERIOD}, {"slash",SDLK_SLASH}, {"printscreen",SDLK_PRINT}, + {"scrolllock",SDLK_SCROLLOCK}, {"pause",SDLK_PAUSE}, {"pagedown",SDLK_PAGEDOWN}, {"pageup",SDLK_PAGEUP}, {"insert",SDLK_INSERT}, {"home",SDLK_HOME}, {"delete",SDLK_DELETE}, {"end",SDLK_END}, {"up",SDLK_UP}, {"left",SDLK_LEFT}, {"down",SDLK_DOWN}, {"right",SDLK_RIGHT}, @@ -1074,6 +1095,11 @@ static void CreateDefaultBinds(void) { (*hit)->MakeDefaultBind(buffer); CreateStringBind(buffer); } + /* JOYSTICK */ + if (SDL_NumJoysticks()>0) { +// default mapping + } + } void MAPPER_AddHandler(MAPPER_Handler * handler,MapKeys key,Bitu mods,char * eventname,char * buttonname) { @@ -1162,7 +1188,7 @@ void MAPPER_Run(void) { for (CEventVector_it evit=events.begin();evit!=events.end();evit++) { (*evit)->DeActivateAll(); } - + bool mousetoggle=false; if(mouselocked) { mousetoggle=true; diff --git a/src/hardware/keyboard.cpp b/src/hardware/keyboard.cpp index 1c7e31fb..fca75a50 100644 --- a/src/hardware/keyboard.cpp +++ b/src/hardware/keyboard.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: keyboard.cpp,v 1.25 2004-06-20 22:03:34 harekiet Exp $ */ +/* $Id: keyboard.cpp,v 1.26 2004-06-30 14:40:08 qbix79 Exp $ */ #include #include @@ -320,6 +320,10 @@ void KEYBOARD_AddKey(KBD_KEYS keytype,bool pressed) { case KBD_pagedown:extend=true;ret=81;break; case KBD_insert:extend=true;ret=82;break; case KBD_delete:extend=true;ret=83;break; + case KBD_pause: + case KBD_printscreen: + /* Not handled yet. But usuable in mapper for special events */ + return; default: E_Exit("Unsupported key press"); break;