mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-05-09 03:41:10 +08:00
enhanced mapper and system menu etc
This commit is contained in:
parent
def06b31dd
commit
73423681dd
22
CHANGELOG
22
CHANGELOG
@ -29,10 +29,24 @@
|
|||||||
options such as increasing/decreasing the TTF font
|
options such as increasing/decreasing the TTF font
|
||||||
sizes and on-screen text style toggling (including
|
sizes and on-screen text style toggling (including
|
||||||
bold, italics, underline and strikeout). (Wengier)
|
bold, italics, underline and strikeout). (Wengier)
|
||||||
- Cleaned up the mapper editor interface to allow
|
- You can now select a host key from the menu (under
|
||||||
more keyboard shortcuts to be added, shown in
|
"Main") including Ctrl+Alt, Ctrl+Shift, Alt+Shift,
|
||||||
multiple pages in the mapper, navigable with the
|
or use the mapper-defined host key as in previous
|
||||||
"Previous Page" and "Next Page" buttons. (Wengier)
|
versions (which default to F11 on Windows and F12
|
||||||
|
otherwise). A config option "hostkey" is added so
|
||||||
|
that you can specify it from config file. (Wengier)
|
||||||
|
- The system menu in Windows SDL1 builds is now also
|
||||||
|
available for Windows SDL2 builds, and menu items
|
||||||
|
"Reset font size", "Increase TTF font size" and
|
||||||
|
"Decrease TTF font size" are added. (Wengier)
|
||||||
|
- Enhanced the mapper editor interface to allow more
|
||||||
|
keyboard shortcuts to be added, shown in multiple
|
||||||
|
pages in the mapper, navigable with the "Previous
|
||||||
|
Page" and "Next Page" buttons. The text in the
|
||||||
|
grids are now longer and clearer too. The default
|
||||||
|
shortcuts for a few items are changed to use the
|
||||||
|
Host key style (e.g. Host+S and Host+L for saving
|
||||||
|
and loading states respectively). (Wengier)
|
||||||
- Added menu item "List network interfaces" under
|
- Added menu item "List network interfaces" under
|
||||||
"Help" menu to list network interfaces in the host
|
"Help" menu to list network interfaces in the host
|
||||||
system for the NE2000 feature. (Wengier)
|
system for the NE2000 feature. (Wengier)
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<category>Emulation</category>
|
<category>Emulation</category>
|
||||||
</categories>
|
</categories>
|
||||||
<releases>
|
<releases>
|
||||||
<release version="@PACKAGE_VERSION@" date="2020-11-23"/>
|
<release version="@PACKAGE_VERSION@" date="2020-11-25"/>
|
||||||
</releases>
|
</releases>
|
||||||
<screenshots>
|
<screenshots>
|
||||||
<screenshot type="default">
|
<screenshot type="default">
|
||||||
|
@ -168,6 +168,8 @@ logfile =
|
|||||||
# If set to autofile, DOSBox-X will warn if there are open file handles or a guest system is currently running.
|
# If set to autofile, DOSBox-X will warn if there are open file handles or a guest system is currently running.
|
||||||
# Possible values: true, false, 1, 0, auto, autofile.
|
# Possible values: true, false, 1, 0, auto, autofile.
|
||||||
# show advanced options: If set, the Configuration Tool will display all config options (including advanced ones) by default.
|
# show advanced options: If set, the Configuration Tool will display all config options (including advanced ones) by default.
|
||||||
|
# hostkey: Select a DOSBox-X host key, or use the mapper-defined host key (default: F11 on Windows and F12 otherwise).
|
||||||
|
# Possible values: ctrlalt, ctrlshift, altshift, mapper.
|
||||||
# mapper send key: Select the key the mapper SendKey function will send.
|
# mapper send key: Select the key the mapper SendKey function will send.
|
||||||
# Possible values: winlogo, winmenu, alttab, ctrlesc, ctrlbreak, ctrlaltdel.
|
# Possible values: winlogo, winmenu, alttab, ctrlesc, ctrlbreak, ctrlaltdel.
|
||||||
#DOSBOX-X-ADV:# keyboard hook: Use keyboard hook (currently only on Windows) to catch special keys and synchronize the keyboard LEDs with the host.
|
#DOSBOX-X-ADV:# keyboard hook: Use keyboard hook (currently only on Windows) to catch special keys and synchronize the keyboard LEDs with the host.
|
||||||
@ -346,6 +348,7 @@ startbanner = true
|
|||||||
#DOSBOX-X-ADV:dpi aware = auto
|
#DOSBOX-X-ADV:dpi aware = auto
|
||||||
quit warning = auto
|
quit warning = auto
|
||||||
show advanced options = false
|
show advanced options = false
|
||||||
|
hostkey = mapper
|
||||||
mapper send key = ctrlaltdel
|
mapper send key = ctrlaltdel
|
||||||
#DOSBOX-X-ADV:keyboard hook = false
|
#DOSBOX-X-ADV:keyboard hook = false
|
||||||
#DOSBOX-X-ADV:weitek = false
|
#DOSBOX-X-ADV:weitek = false
|
||||||
|
@ -83,6 +83,8 @@ logfile =
|
|||||||
# If set to autofile, DOSBox-X will warn if there are open file handles or a guest system is currently running.
|
# If set to autofile, DOSBox-X will warn if there are open file handles or a guest system is currently running.
|
||||||
# Possible values: true, false, 1, 0, auto, autofile.
|
# Possible values: true, false, 1, 0, auto, autofile.
|
||||||
# show advanced options: If set, the Configuration Tool will display all config options (including advanced ones) by default.
|
# show advanced options: If set, the Configuration Tool will display all config options (including advanced ones) by default.
|
||||||
|
# hostkey: Select a DOSBox-X host key, or use the mapper-defined host key (default: F11 on Windows and F12 otherwise).
|
||||||
|
# Possible values: ctrlalt, ctrlshift, altshift, mapper.
|
||||||
# mapper send key: Select the key the mapper SendKey function will send.
|
# mapper send key: Select the key the mapper SendKey function will send.
|
||||||
# Possible values: winlogo, winmenu, alttab, ctrlesc, ctrlbreak, ctrlaltdel.
|
# Possible values: winlogo, winmenu, alttab, ctrlesc, ctrlbreak, ctrlaltdel.
|
||||||
# machine: The type of machine DOSBox-X tries to emulate.
|
# machine: The type of machine DOSBox-X tries to emulate.
|
||||||
@ -107,6 +109,7 @@ fastbioslogo = false
|
|||||||
startbanner = true
|
startbanner = true
|
||||||
quit warning = auto
|
quit warning = auto
|
||||||
show advanced options = false
|
show advanced options = false
|
||||||
|
hostkey = mapper
|
||||||
mapper send key = ctrlaltdel
|
mapper send key = ctrlaltdel
|
||||||
machine = svga_s3
|
machine = svga_s3
|
||||||
captures = capture
|
captures = capture
|
||||||
|
@ -168,6 +168,8 @@ fileio = false
|
|||||||
# If set to autofile, DOSBox-X will warn if there are open file handles or a guest system is currently running.
|
# If set to autofile, DOSBox-X will warn if there are open file handles or a guest system is currently running.
|
||||||
# Possible values: true, false, 1, 0, auto, autofile.
|
# Possible values: true, false, 1, 0, auto, autofile.
|
||||||
# show advanced options: If set, the Configuration Tool will display all config options (including advanced ones) by default.
|
# show advanced options: If set, the Configuration Tool will display all config options (including advanced ones) by default.
|
||||||
|
# hostkey: Select a DOSBox-X host key, or use the mapper-defined host key (default: F11 on Windows and F12 otherwise).
|
||||||
|
# Possible values: ctrlalt, ctrlshift, altshift, mapper.
|
||||||
# mapper send key: Select the key the mapper SendKey function will send.
|
# mapper send key: Select the key the mapper SendKey function will send.
|
||||||
# Possible values: winlogo, winmenu, alttab, ctrlesc, ctrlbreak, ctrlaltdel.
|
# Possible values: winlogo, winmenu, alttab, ctrlesc, ctrlbreak, ctrlaltdel.
|
||||||
# keyboard hook: Use keyboard hook (currently only on Windows) to catch special keys and synchronize the keyboard LEDs with the host.
|
# keyboard hook: Use keyboard hook (currently only on Windows) to catch special keys and synchronize the keyboard LEDs with the host.
|
||||||
@ -346,6 +348,7 @@ startbanner = true
|
|||||||
dpi aware = auto
|
dpi aware = auto
|
||||||
quit warning = auto
|
quit warning = auto
|
||||||
show advanced options = false
|
show advanced options = false
|
||||||
|
hostkey = mapper
|
||||||
mapper send key = ctrlaltdel
|
mapper send key = ctrlaltdel
|
||||||
keyboard hook = false
|
keyboard hook = false
|
||||||
weitek = false
|
weitek = false
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/*auto-generated*/
|
/*auto-generated*/
|
||||||
#define UPDATED_STR "Nov 23, 2020 1:54:58am"
|
#define UPDATED_STR "Nov 25, 2020 1:10:55am"
|
||||||
#define GIT_COMMIT_HASH "1b77eb2"
|
#define GIT_COMMIT_HASH "def06b3"
|
||||||
#define COPYRIGHT_END_YEAR "2020"
|
#define COPYRIGHT_END_YEAR "2020"
|
||||||
|
@ -26,9 +26,9 @@ 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_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_kpplus,MK_minus,MK_equals,MK_scrolllock,MK_printscreen,MK_pause,MK_home,MK_rightarrow,
|
MK_return,MK_kpminus,MK_kpplus,MK_minus,MK_equals,MK_scrolllock,MK_printscreen,MK_pause,MK_home,MK_rightarrow,
|
||||||
MK_1, MK_2, MK_3, MK_4,
|
MK_1, MK_2, MK_3, MK_4,
|
||||||
MK_a, MK_c, MK_d, MK_f, MK_m, MK_q, MK_r, MK_s, MK_v, MK_w,
|
MK_a, MK_b, MK_c, MK_d, MK_f, MK_i, MK_l, MK_m, MK_o, MK_p, MK_q, MK_r, MK_s, MK_v, MK_w,
|
||||||
MK_escape,MK_delete,MK_uparrow,MK_downarrow,
|
MK_escape,MK_delete,MK_uparrow,MK_downarrow,MK_leftarrow,
|
||||||
MK_lbracket,MK_rbracket,MK_leftarrow,
|
MK_lbracket,MK_rbracket,MK_comma,MK_period,
|
||||||
|
|
||||||
MK_MAX
|
MK_MAX
|
||||||
};
|
};
|
||||||
|
@ -448,9 +448,9 @@ class DOSBoxMenu {
|
|||||||
public:
|
public:
|
||||||
HMENU getWinMenu(void) const;
|
HMENU getWinMenu(void) const;
|
||||||
bool mainMenuWM_COMMAND(unsigned int id);
|
bool mainMenuWM_COMMAND(unsigned int id);
|
||||||
|
#endif
|
||||||
public:
|
public:
|
||||||
static constexpr unsigned int winMenuMinimumID = 0x1000;
|
static constexpr unsigned int winMenuMinimumID = 0x1000;
|
||||||
#endif
|
|
||||||
#if DOSBOXMENU_TYPE == DOSBOXMENU_NSMENU /* Mac OS X NSMenu / NSMenuItem handle */
|
#if DOSBOXMENU_TYPE == DOSBOXMENU_NSMENU /* Mac OS X NSMenu / NSMenuItem handle */
|
||||||
protected:
|
protected:
|
||||||
void* nsMenu = NULL;
|
void* nsMenu = NULL;
|
||||||
|
@ -739,6 +739,11 @@
|
|||||||
# define ID_WIN_SYSMENU_MAPPER 0x0F02
|
# define ID_WIN_SYSMENU_MAPPER 0x0F02
|
||||||
# define ID_WIN_SYSMENU_CFG_GUI 0x0F03
|
# define ID_WIN_SYSMENU_CFG_GUI 0x0F03
|
||||||
# define ID_WIN_SYSMENU_PAUSE 0x0F04
|
# define ID_WIN_SYSMENU_PAUSE 0x0F04
|
||||||
|
# define ID_WIN_SYSMENU_RESETSIZE 0x0F05
|
||||||
|
#if defined(USE_TTF)
|
||||||
|
# define ID_WIN_SYSMENU_TTFINCSIZE 0x0F06
|
||||||
|
# define ID_WIN_SYSMENU_TTFDECSIZE 0x0F07
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#define IDI_MAPPER 0x1000
|
#define IDI_MAPPER 0x1000
|
||||||
#define IDI_CFG_GUI 0x1001
|
#define IDI_CFG_GUI 0x1001
|
||||||
|
@ -1097,13 +1097,13 @@ void DOSBOX_RealInit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//add support for loading/saving game states
|
//add support for loading/saving game states
|
||||||
MAPPER_AddHandler(SaveGameState, MK_f7, MMOD1,"savestate","Save state", &item);
|
MAPPER_AddHandler(SaveGameState, MK_s, MMODHOST,"savestate","Save state", &item);
|
||||||
item->set_text("Save state");
|
item->set_text("Save state");
|
||||||
MAPPER_AddHandler(LoadGameState, MK_f8, MMOD1,"loadstate","Load state", &item);
|
MAPPER_AddHandler(LoadGameState, MK_l, MMODHOST,"loadstate","Load state", &item);
|
||||||
item->set_text("Load state");
|
item->set_text("Load state");
|
||||||
MAPPER_AddHandler(PreviousSaveSlot, MK_f7, MMOD1|MMOD2,"prevslot","Previous save slot", &item);
|
MAPPER_AddHandler(PreviousSaveSlot, MK_comma, MMODHOST,"prevslot","Previous save slot", &item);
|
||||||
item->set_text("Select previous slot");
|
item->set_text("Select previous slot");
|
||||||
MAPPER_AddHandler(NextSaveSlot, MK_f8, MMOD1|MMOD2,"nextslot","Next save slot", &item);
|
MAPPER_AddHandler(NextSaveSlot, MK_period, MMODHOST,"nextslot","Next save slot", &item);
|
||||||
item->set_text("Select next slot");
|
item->set_text("Select next slot");
|
||||||
|
|
||||||
Section_prop *section = static_cast<Section_prop *>(control->GetSection("dosbox"));
|
Section_prop *section = static_cast<Section_prop *>(control->GetSection("dosbox"));
|
||||||
@ -1328,6 +1328,9 @@ void DOSBOX_SetupConfigSections(void) {
|
|||||||
const char* aspectmodes[] = { "false", "true", "0", "1", "yes", "no", "nearest", "bilinear", 0};
|
const char* aspectmodes[] = { "false", "true", "0", "1", "yes", "no", "nearest", "bilinear", 0};
|
||||||
const char *vga_ac_mapping_settings[] = { "", "auto", "4x4", "4low", "first16", 0 };
|
const char *vga_ac_mapping_settings[] = { "", "auto", "4x4", "4low", "first16", 0 };
|
||||||
|
|
||||||
|
const char* hostkeys[] = {
|
||||||
|
"ctrlalt", "ctrlshift", "altshift", "mapper", 0 };
|
||||||
|
|
||||||
const char* sendkeys[] = {
|
const char* sendkeys[] = {
|
||||||
"winlogo", "winmenu", "alttab", "ctrlesc", "ctrlbreak", "ctrlaltdel", 0 };
|
"winlogo", "winmenu", "alttab", "ctrlesc", "ctrlbreak", "ctrlaltdel", 0 };
|
||||||
|
|
||||||
@ -1428,6 +1431,11 @@ void DOSBOX_SetupConfigSections(void) {
|
|||||||
Pbool->Set_help("If set, the Configuration Tool will display all config options (including advanced ones) by default.");
|
Pbool->Set_help("If set, the Configuration Tool will display all config options (including advanced ones) by default.");
|
||||||
Pbool->SetBasic(true);
|
Pbool->SetBasic(true);
|
||||||
|
|
||||||
|
Pstring = secprop->Add_string("hostkey", Property::Changeable::Always, "mapper");
|
||||||
|
Pstring->Set_help("Select a DOSBox-X host key, or use the mapper-defined host key (default: F11 on Windows and F12 otherwise).");
|
||||||
|
Pstring->Set_values(hostkeys);
|
||||||
|
Pstring->SetBasic(true);
|
||||||
|
|
||||||
Pstring = secprop->Add_string("mapper send key", Property::Changeable::Always, "ctrlaltdel");
|
Pstring = secprop->Add_string("mapper send key", Property::Changeable::Always, "ctrlaltdel");
|
||||||
Pstring->Set_help("Select the key the mapper SendKey function will send.");
|
Pstring->Set_help("Select the key the mapper SendKey function will send.");
|
||||||
Pstring->Set_values(sendkeys);
|
Pstring->Set_values(sendkeys);
|
||||||
|
314
src/gui/menu.cpp
314
src/gui/menu.cpp
@ -87,6 +87,7 @@ void GUI_ResetResize(bool pressed
|
|||||||
|
|
||||||
MENU_Block menu;
|
MENU_Block menu;
|
||||||
|
|
||||||
|
int ttfpos=-1;
|
||||||
unsigned int hdd_defsize=16000;
|
unsigned int hdd_defsize=16000;
|
||||||
char hdd_size[20]="";
|
char hdd_size[20]="";
|
||||||
|
|
||||||
@ -115,6 +116,7 @@ static const char *def_menu_main[] =
|
|||||||
"mapper_mapper",
|
"mapper_mapper",
|
||||||
"--",
|
"--",
|
||||||
"MainSendKey",
|
"MainSendKey",
|
||||||
|
"MainHostKey",
|
||||||
#if defined(WIN32) || defined(C_SDL2) || defined(LINUX) && C_X11
|
#if defined(WIN32) || defined(C_SDL2) || defined(LINUX) && C_X11
|
||||||
"SharedClipboard",
|
"SharedClipboard",
|
||||||
#endif
|
#endif
|
||||||
@ -161,6 +163,17 @@ static const char *def_menu_main_sendkey[] =
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* main -> host key menu ("MenuHostKey") */
|
||||||
|
static const char *def_menu_main_hostkey[] =
|
||||||
|
{
|
||||||
|
"hostkey_ctrlalt",
|
||||||
|
"hostkey_ctrlshift",
|
||||||
|
"hostkey_altshift",
|
||||||
|
"--",
|
||||||
|
"hostkey_mapper",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
/* main -> mouse wheel menu ("WheelToArrows") */
|
/* main -> mouse wheel menu ("WheelToArrows") */
|
||||||
static const char *def_menu_main_wheelarrow[] =
|
static const char *def_menu_main_wheelarrow[] =
|
||||||
{
|
{
|
||||||
@ -723,6 +736,7 @@ static const char *def_menu_help[] =
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void DOSBox_SetSysMenu(void);
|
||||||
bool DOSBox_isMenuVisible(void) {
|
bool DOSBox_isMenuVisible(void) {
|
||||||
return menu.toggle;
|
return menu.toggle;
|
||||||
}
|
}
|
||||||
@ -1362,6 +1376,9 @@ void ConstructMenu(void) {
|
|||||||
/* main sendkey menu */
|
/* main sendkey menu */
|
||||||
ConstructSubMenu(mainMenu.get_item("MainSendKey").get_master_id(), def_menu_main_sendkey);
|
ConstructSubMenu(mainMenu.get_item("MainSendKey").get_master_id(), def_menu_main_sendkey);
|
||||||
|
|
||||||
|
/* main hostkey menu */
|
||||||
|
ConstructSubMenu(mainMenu.get_item("MainHostKey").get_master_id(), def_menu_main_hostkey);
|
||||||
|
|
||||||
/* main mouse wheel movements menu */
|
/* main mouse wheel movements menu */
|
||||||
ConstructSubMenu(mainMenu.get_item("WheelToArrow").get_master_id(), def_menu_main_wheelarrow);
|
ConstructSubMenu(mainMenu.get_item("WheelToArrow").get_master_id(), def_menu_main_wheelarrow);
|
||||||
|
|
||||||
@ -1628,10 +1645,8 @@ void DOSBox_SetMenu(void) {
|
|||||||
if(menu.startup) {
|
if(menu.startup) {
|
||||||
RENDER_CallBack( GFX_CallBackReset );
|
RENDER_CallBack( GFX_CallBackReset );
|
||||||
}
|
}
|
||||||
|
|
||||||
void DOSBox_SetSysMenu(void);
|
|
||||||
DOSBox_SetSysMenu();
|
|
||||||
#endif
|
#endif
|
||||||
|
DOSBox_SetSysMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DOSBox_NoMenu(void) {
|
void DOSBox_NoMenu(void) {
|
||||||
@ -1654,10 +1669,8 @@ void DOSBox_NoMenu(void) {
|
|||||||
SDL1_hax_SetMenu(NULL);
|
SDL1_hax_SetMenu(NULL);
|
||||||
mainMenu.get_item("mapper_togmenu").check(!menu.toggle).refresh_item(mainMenu);
|
mainMenu.get_item("mapper_togmenu").check(!menu.toggle).refresh_item(mainMenu);
|
||||||
RENDER_CallBack( GFX_CallBackReset );
|
RENDER_CallBack( GFX_CallBackReset );
|
||||||
|
|
||||||
void DOSBox_SetSysMenu(void);
|
|
||||||
DOSBox_SetSysMenu();
|
|
||||||
#endif
|
#endif
|
||||||
|
DOSBox_SetSysMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToggleMenu(bool pressed) {
|
void ToggleMenu(bool pressed) {
|
||||||
@ -1680,7 +1693,6 @@ void ToggleMenu(bool pressed) {
|
|||||||
DOSBox_NoMenu();
|
DOSBox_NoMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DOSBox_SetSysMenu(void);
|
|
||||||
DOSBox_SetSysMenu();
|
DOSBox_SetSysMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1721,6 +1733,181 @@ HWND GetSurfaceHWND(void) {
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void MSG_WM_COMMAND_handle(SDL_SysWMmsg &Message) {
|
||||||
|
#if defined(WIN32) && !defined(HX_DOS)
|
||||||
|
bool GFX_GetPreventFullscreen(void);
|
||||||
|
bool MAPPER_IsRunning(void);
|
||||||
|
bool GUI_IsRunning(void);
|
||||||
|
|
||||||
|
#if defined(C_SDL2)
|
||||||
|
if (Message.msg.win.msg != WM_COMMAND) return;
|
||||||
|
#else
|
||||||
|
if (Message.msg != WM_COMMAND) return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
WPARAM wParam;
|
||||||
|
#if defined(C_SDL2)
|
||||||
|
wParam=Message.msg.win.wParam;
|
||||||
|
#else
|
||||||
|
wParam=Message.wParam;
|
||||||
|
#endif
|
||||||
|
if (!MAPPER_IsRunning() && !GUI_IsRunning()) {
|
||||||
|
if (LOWORD(wParam) == ID_WIN_SYSMENU_MAPPER) {
|
||||||
|
extern void MAPPER_Run(bool pressed);
|
||||||
|
MAPPER_Run(false);
|
||||||
|
}
|
||||||
|
if (LOWORD(wParam) == ID_WIN_SYSMENU_CFG_GUI) {
|
||||||
|
extern void GUI_Run(bool pressed);
|
||||||
|
GUI_Run(false);
|
||||||
|
}
|
||||||
|
if (LOWORD(wParam) == ID_WIN_SYSMENU_PAUSE) {
|
||||||
|
extern void PauseDOSBox(bool pressed);
|
||||||
|
PauseDOSBox(true);
|
||||||
|
}
|
||||||
|
if (LOWORD(wParam) == ID_WIN_SYSMENU_RESETSIZE) {
|
||||||
|
extern void resetFontSize();
|
||||||
|
resetFontSize();
|
||||||
|
}
|
||||||
|
#if defined(USE_TTF)
|
||||||
|
if (LOWORD(wParam) == ID_WIN_SYSMENU_TTFINCSIZE) {
|
||||||
|
extern void increaseFontSize();
|
||||||
|
increaseFontSize();
|
||||||
|
}
|
||||||
|
if (LOWORD(wParam) == ID_WIN_SYSMENU_TTFDECSIZE) {
|
||||||
|
extern void decreaseFontSize();
|
||||||
|
decreaseFontSize();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
std::string fullScreenString = std::string("desktop.fullscreen");
|
||||||
|
if (!menu.gui || GetSetSDLValue(1, fullScreenString, 0)) return;
|
||||||
|
if (!GetMenu(GetHWND())) return;
|
||||||
|
#if DOSBOXMENU_TYPE == DOSBOXMENU_HMENU
|
||||||
|
if (mainMenu.mainMenuWM_COMMAND((unsigned int)LOWORD(wParam))) return;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void DOSBox_SetSysMenu(void) {
|
||||||
|
#if defined(WIN32) && !defined(HX_DOS)
|
||||||
|
MENUITEMINFO mii;
|
||||||
|
HMENU sysmenu;
|
||||||
|
|
||||||
|
sysmenu = GetSystemMenu(GetHWND(), TRUE); // revert, so we can reapply menu items
|
||||||
|
sysmenu = GetSystemMenu(GetHWND(), FALSE);
|
||||||
|
if (sysmenu == NULL) return;
|
||||||
|
|
||||||
|
AppendMenu(sysmenu, MF_SEPARATOR, -1, "");
|
||||||
|
|
||||||
|
#if DOSBOXMENU_TYPE == DOSBOXMENU_HMENU
|
||||||
|
{
|
||||||
|
const char *msg = "Show &menu bar";
|
||||||
|
|
||||||
|
memset(&mii, 0, sizeof(mii));
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
||||||
|
mii.fState = (menu.toggle ? MFS_CHECKED : 0) | (GFX_GetPreventFullscreen() ? MFS_DISABLED : MFS_ENABLED);
|
||||||
|
mii.wID = ID_WIN_SYSMENU_TOGGLEMENU;
|
||||||
|
mii.dwTypeData = (LPTSTR)(msg);
|
||||||
|
mii.cch = (UINT)(strlen(msg)+1);
|
||||||
|
|
||||||
|
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
{
|
||||||
|
const char *msg = "&Pause";
|
||||||
|
|
||||||
|
memset(&mii, 0, sizeof(mii));
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
||||||
|
mii.fState = MFS_ENABLED;
|
||||||
|
mii.wID = ID_WIN_SYSMENU_PAUSE;
|
||||||
|
mii.dwTypeData = (LPTSTR)(msg);
|
||||||
|
mii.cch = (UINT)(strlen(msg) + 1);
|
||||||
|
|
||||||
|
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
||||||
|
}
|
||||||
|
|
||||||
|
AppendMenu(sysmenu, MF_SEPARATOR, -1, "");
|
||||||
|
|
||||||
|
{
|
||||||
|
const char *msg = "Reset window size";
|
||||||
|
|
||||||
|
memset(&mii, 0, sizeof(mii));
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
||||||
|
mii.fState = MFS_ENABLED;
|
||||||
|
mii.wID = ID_WIN_SYSMENU_RESETSIZE;
|
||||||
|
mii.dwTypeData = (LPTSTR)(msg);
|
||||||
|
mii.cch = (UINT)(strlen(msg)+1);
|
||||||
|
|
||||||
|
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(USE_TTF)
|
||||||
|
bool TTF_using(void);
|
||||||
|
ttfpos = GetMenuItemCount(sysmenu);
|
||||||
|
{
|
||||||
|
const char *msg = "Increase TTF font size";
|
||||||
|
|
||||||
|
memset(&mii, 0, sizeof(mii));
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
||||||
|
mii.fState = TTF_using() ? MFS_ENABLED : MFS_DISABLED;
|
||||||
|
mii.wID = ID_WIN_SYSMENU_TTFINCSIZE;
|
||||||
|
mii.dwTypeData = (LPTSTR)(msg);
|
||||||
|
mii.cch = (UINT)(strlen(msg)+1);
|
||||||
|
|
||||||
|
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const char *msg = "Decrease TTF font size";
|
||||||
|
|
||||||
|
memset(&mii, 0, sizeof(mii));
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
||||||
|
mii.fState = TTF_using() ? MFS_ENABLED : MFS_DISABLED;
|
||||||
|
mii.wID = ID_WIN_SYSMENU_TTFDECSIZE;
|
||||||
|
mii.dwTypeData = (LPTSTR)(msg);
|
||||||
|
mii.cch = (UINT)(strlen(msg)+1);
|
||||||
|
|
||||||
|
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
AppendMenu(sysmenu, MF_SEPARATOR, -1, "");
|
||||||
|
|
||||||
|
{
|
||||||
|
const char *msg = "Configuration &Tool";
|
||||||
|
|
||||||
|
memset(&mii, 0, sizeof(mii));
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
||||||
|
mii.fState = MFS_ENABLED;
|
||||||
|
mii.wID = ID_WIN_SYSMENU_CFG_GUI;
|
||||||
|
mii.dwTypeData = (LPTSTR)(msg);
|
||||||
|
mii.cch = (UINT)(strlen(msg) + 1);
|
||||||
|
|
||||||
|
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const char *msg = "Mapper &Editor";
|
||||||
|
|
||||||
|
memset(&mii, 0, sizeof(mii));
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
||||||
|
mii.fState = MFS_ENABLED;
|
||||||
|
mii.wID = ID_WIN_SYSMENU_MAPPER;
|
||||||
|
mii.dwTypeData = (LPTSTR)(msg);
|
||||||
|
mii.cch = (UINT)(strlen(msg) + 1);
|
||||||
|
|
||||||
|
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
#if defined(WIN32) && !defined(C_SDL2) && !defined(HX_DOS)
|
#if defined(WIN32) && !defined(C_SDL2) && !defined(HX_DOS)
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
|
|
||||||
@ -1850,79 +2037,6 @@ void Mount_Img(char drive, std::string realpath) {
|
|||||||
(void)drive;
|
(void)drive;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DOSBox_SetSysMenu(void) {
|
|
||||||
#if !defined(HX_DOS)
|
|
||||||
MENUITEMINFO mii;
|
|
||||||
HMENU sysmenu;
|
|
||||||
|
|
||||||
sysmenu = GetSystemMenu(GetHWND(), TRUE); // revert, so we can reapply menu items
|
|
||||||
sysmenu = GetSystemMenu(GetHWND(), FALSE);
|
|
||||||
if (sysmenu == NULL) return;
|
|
||||||
|
|
||||||
AppendMenu(sysmenu, MF_SEPARATOR, -1, "");
|
|
||||||
|
|
||||||
{
|
|
||||||
const char *msg = "Show menu &bar";
|
|
||||||
|
|
||||||
memset(&mii, 0, sizeof(mii));
|
|
||||||
mii.cbSize = sizeof(mii);
|
|
||||||
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
|
||||||
mii.fState = (menu.toggle ? MFS_CHECKED : 0) | (GFX_GetPreventFullscreen() ? MFS_DISABLED : MFS_ENABLED);
|
|
||||||
mii.wID = ID_WIN_SYSMENU_TOGGLEMENU;
|
|
||||||
mii.dwTypeData = (LPTSTR)(msg);
|
|
||||||
mii.cch = (UINT)(strlen(msg)+1);
|
|
||||||
|
|
||||||
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
|
||||||
}
|
|
||||||
|
|
||||||
AppendMenu(sysmenu, MF_SEPARATOR, -1, "");
|
|
||||||
|
|
||||||
{
|
|
||||||
const char *msg = "&Pause";
|
|
||||||
|
|
||||||
memset(&mii, 0, sizeof(mii));
|
|
||||||
mii.cbSize = sizeof(mii);
|
|
||||||
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
|
||||||
mii.fState = MFS_ENABLED;
|
|
||||||
mii.wID = ID_WIN_SYSMENU_PAUSE;
|
|
||||||
mii.dwTypeData = (LPTSTR)(msg);
|
|
||||||
mii.cch = (UINT)(strlen(msg) + 1);
|
|
||||||
|
|
||||||
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
|
||||||
}
|
|
||||||
|
|
||||||
AppendMenu(sysmenu, MF_SEPARATOR, -1, "");
|
|
||||||
|
|
||||||
{
|
|
||||||
const char *msg = "Show &mapper interface";
|
|
||||||
|
|
||||||
memset(&mii, 0, sizeof(mii));
|
|
||||||
mii.cbSize = sizeof(mii);
|
|
||||||
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
|
||||||
mii.fState = MFS_ENABLED;
|
|
||||||
mii.wID = ID_WIN_SYSMENU_MAPPER;
|
|
||||||
mii.dwTypeData = (LPTSTR)(msg);
|
|
||||||
mii.cch = (UINT)(strlen(msg) + 1);
|
|
||||||
|
|
||||||
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
const char *msg = "Show configuration &GUI";
|
|
||||||
|
|
||||||
memset(&mii, 0, sizeof(mii));
|
|
||||||
mii.cbSize = sizeof(mii);
|
|
||||||
mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
|
|
||||||
mii.fState = MFS_ENABLED;
|
|
||||||
mii.wID = ID_WIN_SYSMENU_CFG_GUI;
|
|
||||||
mii.dwTypeData = (LPTSTR)(msg);
|
|
||||||
mii.cch = (UINT)(strlen(msg) + 1);
|
|
||||||
|
|
||||||
InsertMenuItem(sysmenu, GetMenuItemCount(sysmenu), TRUE, &mii);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void DOSBox_CheckOS(int &id, int &major, int &minor) {
|
void DOSBox_CheckOS(int &id, int &major, int &minor) {
|
||||||
OSVERSIONINFO osi;
|
OSVERSIONINFO osi;
|
||||||
ZeroMemory(&osi, sizeof(OSVERSIONINFO));
|
ZeroMemory(&osi, sizeof(OSVERSIONINFO));
|
||||||
@ -1962,12 +2076,12 @@ void DOSBox_RefreshMenu(void) {
|
|||||||
DrawMenuBar(GetHWND());
|
DrawMenuBar(GetHWND());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DOSBox_SetSysMenu();
|
|
||||||
if(menu.toggle)
|
if(menu.toggle)
|
||||||
DOSBox_SetMenu();
|
DOSBox_SetMenu();
|
||||||
else
|
else
|
||||||
DOSBox_NoMenu();
|
DOSBox_NoMenu();
|
||||||
#endif
|
#endif
|
||||||
|
DOSBox_SetSysMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DOSBox_RefreshMenu2(void) {
|
void DOSBox_RefreshMenu2(void) {
|
||||||
@ -1993,10 +2107,8 @@ void DOSBox_RefreshMenu2(void) {
|
|||||||
NonUserResizeCounter=1;
|
NonUserResizeCounter=1;
|
||||||
SDL1_hax_SetMenu(NULL);
|
SDL1_hax_SetMenu(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DOSBox_SetSysMenu(void);
|
|
||||||
DOSBox_SetSysMenu();
|
|
||||||
#endif
|
#endif
|
||||||
|
DOSBox_SetSysMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MENU_Check_Drive(HMENU handle, int cdrom, int floppy, int local, int image, int automount, int umount, char drive) {
|
void MENU_Check_Drive(HMENU handle, int cdrom, int floppy, int local, int image, int automount, int umount, char drive) {
|
||||||
@ -2033,40 +2145,6 @@ void reflectmenu_INITMENU_cb() {
|
|||||||
the menus before the menu is displayed. */
|
the menus before the menu is displayed. */
|
||||||
Reflect_Menu();
|
Reflect_Menu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MSG_WM_COMMAND_handle(SDL_SysWMmsg &Message) {
|
|
||||||
bool GFX_GetPreventFullscreen(void);
|
|
||||||
|
|
||||||
if (Message.msg != WM_COMMAND) return;
|
|
||||||
#if defined(WIN32) && !defined(HX_DOS)
|
|
||||||
bool MAPPER_IsRunning(void);
|
|
||||||
bool GUI_IsRunning(void);
|
|
||||||
|
|
||||||
if (!MAPPER_IsRunning() && !GUI_IsRunning()) {
|
|
||||||
if (LOWORD(Message.wParam) == ID_WIN_SYSMENU_MAPPER) {
|
|
||||||
extern void MAPPER_Run(bool pressed);
|
|
||||||
MAPPER_Run(false);
|
|
||||||
}
|
|
||||||
if (LOWORD(Message.wParam) == ID_WIN_SYSMENU_CFG_GUI) {
|
|
||||||
extern void GUI_Run(bool pressed);
|
|
||||||
GUI_Run(false);
|
|
||||||
}
|
|
||||||
if (LOWORD(Message.wParam) == ID_WIN_SYSMENU_PAUSE) {
|
|
||||||
extern void PauseDOSBox(bool pressed);
|
|
||||||
PauseDOSBox(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
std::string fullScreenString = std::string("desktop.fullscreen");
|
|
||||||
if (!menu.gui || GetSetSDLValue(1, fullScreenString, 0)) return;
|
|
||||||
if (!GetMenu(GetHWND())) return;
|
|
||||||
#if DOSBOXMENU_TYPE == DOSBOXMENU_HMENU
|
|
||||||
if (mainMenu.mainMenuWM_COMMAND((unsigned int)LOWORD(Message.wParam))) return;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void DOSBox_SetSysMenu(void) {
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if DOSBOXMENU_TYPE == DOSBOXMENU_SDLDRAW
|
#if DOSBOXMENU_TYPE == DOSBOXMENU_SDLDRAW
|
||||||
|
@ -99,6 +99,7 @@ int shortcutid = -1;
|
|||||||
void GFX_GetSizeAndPos(int &x,int &y,int &width, int &height, bool &fullscreen);
|
void GFX_GetSizeAndPos(int &x,int &y,int &width, int &height, bool &fullscreen);
|
||||||
|
|
||||||
#if defined(WIN32) && !defined(HX_DOS)
|
#if defined(WIN32) && !defined(HX_DOS)
|
||||||
|
void DOSBox_SetSysMenu(void);
|
||||||
void WindowsTaskbarUpdatePreviewRegion(void);
|
void WindowsTaskbarUpdatePreviewRegion(void);
|
||||||
void WindowsTaskbarResetPreviewRegion(void);
|
void WindowsTaskbarResetPreviewRegion(void);
|
||||||
#endif
|
#endif
|
||||||
@ -480,6 +481,7 @@ static void UI_Shutdown(GUI::ScreenSDL *screen) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WIN32) && !defined(HX_DOS)
|
#if defined(WIN32) && !defined(HX_DOS)
|
||||||
|
DOSBox_SetSysMenu();
|
||||||
WindowsTaskbarUpdatePreviewRegion();
|
WindowsTaskbarUpdatePreviewRegion();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
|
|
||||||
#include "SDL_syswm.h"
|
#include "SDL_syswm.h"
|
||||||
|
#include "sdlmain.h"
|
||||||
|
|
||||||
#if C_EMSCRIPTEN
|
#if C_EMSCRIPTEN
|
||||||
# include <emscripten.h>
|
# include <emscripten.h>
|
||||||
@ -162,7 +163,8 @@ struct KeyBlock {
|
|||||||
static DOSBoxMenu mapperMenu;
|
static DOSBoxMenu mapperMenu;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern uint8_t int10_font_14[256 * 14];
|
extern unsigned int hostkeyalt;
|
||||||
|
extern uint8_t int10_font_14[256 * 14];
|
||||||
|
|
||||||
std::map<std::string,std::string> pending_string_binds;
|
std::map<std::string,std::string> pending_string_binds;
|
||||||
|
|
||||||
@ -2068,7 +2070,13 @@ void CBindGroup::ActivateBindList(CBindList * list,Bits value,bool ev_trigger) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (it=list->begin();it!=list->end();++it) {
|
for (it=list->begin();it!=list->end();++it) {
|
||||||
if (validmod==(*it)->mods) (*it)->ActivateBind(value,ev_trigger);
|
if ((*it)->mods==MMODHOST) {
|
||||||
|
if ((!hostkeyalt&&validmod==(*it)->mods)||(hostkeyalt==1&&(sdl.lctrlstate==SDL_KEYDOWN||sdl.rctrlstate==SDL_KEYDOWN)&&(sdl.laltstate==SDL_KEYDOWN||sdl.raltstate==SDL_KEYDOWN))||(hostkeyalt==2&&(sdl.lctrlstate==SDL_KEYDOWN||sdl.rctrlstate==SDL_KEYDOWN)&&(sdl.lshiftstate==SDL_KEYDOWN||sdl.rshiftstate==SDL_KEYDOWN))||(hostkeyalt==3&&(sdl.laltstate==SDL_KEYDOWN||sdl.raltstate==SDL_KEYDOWN)&&(sdl.lshiftstate==SDL_KEYDOWN||sdl.rshiftstate==SDL_KEYDOWN))) {
|
||||||
|
(*it)->flags|=BFLG_Hold;
|
||||||
|
(*it)->ActivateBind(value,ev_trigger);
|
||||||
|
}
|
||||||
|
} else if (validmod==(*it)->mods)
|
||||||
|
(*it)->ActivateBind(value,ev_trigger);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2647,7 +2655,7 @@ std::string CBind::GetModifierText(void) {
|
|||||||
if ((mods & ((Bitu)1u << (m - 1u))) && mod_event[m] != NULL) {
|
if ((mods & ((Bitu)1u << (m - 1u))) && mod_event[m] != NULL) {
|
||||||
t = mod_event[m]->GetBindMenuText();
|
t = mod_event[m]->GetBindMenuText();
|
||||||
if (!r.empty()) r += "+";
|
if (!r.empty()) r += "+";
|
||||||
r += t;
|
r += m==4?(hostkeyalt==1?"Ctrl+Alt":(hostkeyalt==2?"Ctrl+Shift":(hostkeyalt==3?"Alt+Shift":t))):t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2741,6 +2749,12 @@ public:
|
|||||||
case MK_home:
|
case MK_home:
|
||||||
key=SDL_SCANCODE_HOME;
|
key=SDL_SCANCODE_HOME;
|
||||||
break;
|
break;
|
||||||
|
case MK_comma:
|
||||||
|
key=SDL_SCANCODE_COMMA;
|
||||||
|
break;
|
||||||
|
case MK_period:
|
||||||
|
key=SDL_SCANCODE_PERIOD;
|
||||||
|
break;
|
||||||
case MK_1:
|
case MK_1:
|
||||||
key=SDL_SCANCODE_1;
|
key=SDL_SCANCODE_1;
|
||||||
break;
|
break;
|
||||||
@ -2756,6 +2770,9 @@ public:
|
|||||||
case MK_a:
|
case MK_a:
|
||||||
key=SDL_SCANCODE_A;
|
key=SDL_SCANCODE_A;
|
||||||
break;
|
break;
|
||||||
|
case MK_b:
|
||||||
|
key=SDL_SCANCODE_B;
|
||||||
|
break;
|
||||||
case MK_c:
|
case MK_c:
|
||||||
key=SDL_SCANCODE_C;
|
key=SDL_SCANCODE_C;
|
||||||
break;
|
break;
|
||||||
@ -2765,9 +2782,21 @@ public:
|
|||||||
case MK_f:
|
case MK_f:
|
||||||
key=SDL_SCANCODE_F;
|
key=SDL_SCANCODE_F;
|
||||||
break;
|
break;
|
||||||
|
case MK_i:
|
||||||
|
key=SDL_SCANCODE_I;
|
||||||
|
break;
|
||||||
|
case MK_l:
|
||||||
|
key=SDL_SCANCODE_L;
|
||||||
|
break;
|
||||||
case MK_m:
|
case MK_m:
|
||||||
key=SDL_SCANCODE_M;
|
key=SDL_SCANCODE_M;
|
||||||
break;
|
break;
|
||||||
|
case MK_o:
|
||||||
|
key=SDL_SCANCODE_O;
|
||||||
|
break;
|
||||||
|
case MK_p:
|
||||||
|
key=SDL_SCANCODE_P;
|
||||||
|
break;
|
||||||
case MK_q:
|
case MK_q:
|
||||||
key=SDL_SCANCODE_Q;
|
key=SDL_SCANCODE_Q;
|
||||||
break;
|
break;
|
||||||
@ -2864,6 +2893,12 @@ public:
|
|||||||
case MK_home:
|
case MK_home:
|
||||||
key=SDLK_HOME;
|
key=SDLK_HOME;
|
||||||
break;
|
break;
|
||||||
|
case MK_comma:
|
||||||
|
key=SDLK_COMMA;
|
||||||
|
break;
|
||||||
|
case MK_period:
|
||||||
|
key=SDLK_PERIOD;
|
||||||
|
break;
|
||||||
case MK_1:
|
case MK_1:
|
||||||
key=SDLK_1;
|
key=SDLK_1;
|
||||||
break;
|
break;
|
||||||
@ -2879,6 +2914,9 @@ public:
|
|||||||
case MK_a:
|
case MK_a:
|
||||||
key=SDLK_a;
|
key=SDLK_a;
|
||||||
break;
|
break;
|
||||||
|
case MK_b:
|
||||||
|
key=SDLK_b;
|
||||||
|
break;
|
||||||
case MK_c:
|
case MK_c:
|
||||||
key=SDLK_c;
|
key=SDLK_c;
|
||||||
break;
|
break;
|
||||||
@ -2888,9 +2926,21 @@ public:
|
|||||||
case MK_f:
|
case MK_f:
|
||||||
key=SDLK_f;
|
key=SDLK_f;
|
||||||
break;
|
break;
|
||||||
|
case MK_i:
|
||||||
|
key=SDLK_i;
|
||||||
|
break;
|
||||||
|
case MK_l:
|
||||||
|
key=SDLK_l;
|
||||||
|
break;
|
||||||
case MK_m:
|
case MK_m:
|
||||||
key=SDLK_m;
|
key=SDLK_m;
|
||||||
break;
|
break;
|
||||||
|
case MK_o:
|
||||||
|
key=SDLK_o;
|
||||||
|
break;
|
||||||
|
case MK_p:
|
||||||
|
key=SDLK_p;
|
||||||
|
break;
|
||||||
case MK_q:
|
case MK_q:
|
||||||
key=SDLK_q;
|
key=SDLK_q;
|
||||||
break;
|
break;
|
||||||
@ -4274,6 +4324,12 @@ void MAPPER_Run(bool pressed) {
|
|||||||
PIC_AddEvent(MAPPER_RunEvent,0.0001f); //In case mapper deletes the key object that ran it
|
PIC_AddEvent(MAPPER_RunEvent,0.0001f); //In case mapper deletes the key object that ran it
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_all_shortcuts() {
|
||||||
|
for (auto &ev : events) {
|
||||||
|
if (ev != NULL) ev->update_menu_shortcut();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MAPPER_RunInternal() {
|
void MAPPER_RunInternal() {
|
||||||
MAPPER_ReleaseAllKeys();
|
MAPPER_ReleaseAllKeys();
|
||||||
|
|
||||||
@ -4377,6 +4433,10 @@ void MAPPER_RunInternal() {
|
|||||||
SDL_FreePalette(sdl2_map_pal_ptr);
|
SDL_FreePalette(sdl2_map_pal_ptr);
|
||||||
GFX_SetResizeable(true);
|
GFX_SetResizeable(true);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(USE_TTF)
|
||||||
|
void resetFontSize();
|
||||||
|
if (ttf.inUse) resetFontSize();
|
||||||
|
#endif
|
||||||
#if defined (REDUCE_JOYSTICK_POLLING)
|
#if defined (REDUCE_JOYSTICK_POLLING)
|
||||||
SDL_JoystickEventState(SDL_DISABLE);
|
SDL_JoystickEventState(SDL_DISABLE);
|
||||||
#endif
|
#endif
|
||||||
@ -4414,9 +4474,7 @@ void MAPPER_RunInternal() {
|
|||||||
GFX_LosingFocus();
|
GFX_LosingFocus();
|
||||||
|
|
||||||
/* and then the menu items need to be updated */
|
/* and then the menu items need to be updated */
|
||||||
for (auto &ev : events) {
|
update_all_shortcuts();
|
||||||
if (ev != NULL) ev->update_menu_shortcut();
|
|
||||||
}
|
|
||||||
|
|
||||||
#if DOSBOXMENU_TYPE == DOSBOXMENU_SDLDRAW
|
#if DOSBOXMENU_TYPE == DOSBOXMENU_SDLDRAW
|
||||||
mainMenu.rebuild();
|
mainMenu.rebuild();
|
||||||
@ -4523,9 +4581,7 @@ void MAPPER_Init(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* and then the menu items need to be updated */
|
/* and then the menu items need to be updated */
|
||||||
for (auto &ev : events) {
|
update_all_shortcuts();
|
||||||
if (ev != NULL) ev->update_menu_shortcut();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReloadMapper(Section_prop *section, bool init) {
|
void ReloadMapper(Section_prop *section, bool init) {
|
||||||
|
@ -238,17 +238,18 @@ void osx_init_touchbar(void);
|
|||||||
|
|
||||||
bool TTF_using(void);
|
bool TTF_using(void);
|
||||||
void ShutDownMemHandles(Section * sec);
|
void ShutDownMemHandles(Section * sec);
|
||||||
void resetFontSize();
|
void resetFontSize(), decreaseFontSize();
|
||||||
static void decreaseFontSize();
|
|
||||||
extern SHELL_Cmd cmd_list[];
|
extern SHELL_Cmd cmd_list[];
|
||||||
|
|
||||||
SDL_Block sdl;
|
SDL_Block sdl;
|
||||||
Bitu frames = 0;
|
Bitu frames = 0;
|
||||||
unsigned int page=0;
|
unsigned int page=0;
|
||||||
|
unsigned int hostkeyalt=0;
|
||||||
unsigned int sendkeymap=0;
|
unsigned int sendkeymap=0;
|
||||||
ScreenSizeInfo screen_size_info;
|
ScreenSizeInfo screen_size_info;
|
||||||
|
|
||||||
#if defined(USE_TTF)
|
#if defined(USE_TTF)
|
||||||
|
extern int ttfpos;
|
||||||
Render_ttf ttf;
|
Render_ttf ttf;
|
||||||
bool char512 = true;
|
bool char512 = true;
|
||||||
bool showbold = true;
|
bool showbold = true;
|
||||||
@ -1490,19 +1491,28 @@ void PauseDOSBoxLoop(Bitu /*unused*/) {
|
|||||||
SDL_WaitEvent(&event); // since we're not polling, cpu usage drops to 0.
|
SDL_WaitEvent(&event); // since we're not polling, cpu usage drops to 0.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __WIN32__
|
#if defined(WIN32) && !defined(HX_DOS)
|
||||||
#if DOSBOXMENU_TYPE == DOSBOXMENU_HMENU
|
UINT msg=0;
|
||||||
if (event.type==SDL_SYSWMEVENT && event.syswm.msg->msg == WM_COMMAND && (LOWORD(event.syswm.msg->wParam) == ID_WIN_SYSMENU_PAUSE || LOWORD(event.syswm.msg->wParam) == (mainMenu.get_item("mapper_pause").get_master_id()+DOSBoxMenu::winMenuMinimumID))) {
|
WPARAM wparam;
|
||||||
|
if (event.type==SDL_SYSWMEVENT) {
|
||||||
|
#if defined(C_SDL2)
|
||||||
|
msg=event.syswm.msg->msg.win.msg;
|
||||||
|
wparam=event.syswm.msg->msg.win.wParam;
|
||||||
|
#else
|
||||||
|
msg=event.syswm.msg->msg;
|
||||||
|
wparam=event.syswm.msg->wParam;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (event.type==SDL_SYSWMEVENT && msg == WM_COMMAND && (LOWORD(wparam) == ID_WIN_SYSMENU_PAUSE || LOWORD(wparam) == (mainMenu.get_item("mapper_pause").get_master_id()+DOSBoxMenu::winMenuMinimumID))) {
|
||||||
paused=false;
|
paused=false;
|
||||||
GFX_SetTitle(-1,-1,-1,false);
|
GFX_SetTitle(-1,-1,-1,false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (event.type == SDL_SYSWMEVENT && event.syswm.msg->msg == WM_SYSCOMMAND && LOWORD(event.syswm.msg->wParam) == ID_WIN_SYSMENU_PAUSE) {
|
if (event.type == SDL_SYSWMEVENT && msg == WM_SYSCOMMAND && LOWORD(wparam) == ID_WIN_SYSMENU_PAUSE) {
|
||||||
paused = false;
|
paused = false;
|
||||||
GFX_SetTitle(-1, -1, -1, false);
|
GFX_SetTitle(-1, -1, -1, false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
|
|
||||||
@ -1816,12 +1826,15 @@ Bitu GFX_GetBestMode(Bitu flags)
|
|||||||
void SDL_Prepare(void) {
|
void SDL_Prepare(void) {
|
||||||
if (menu_compatible) return;
|
if (menu_compatible) return;
|
||||||
|
|
||||||
#if defined(WIN32) && !defined(C_SDL2) && !defined(HX_DOS) // Microsoft Windows specific
|
#if defined(WIN32) && !defined(HX_DOS) // Microsoft Windows specific
|
||||||
|
SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE);
|
||||||
|
#if !defined(C_SDL2)
|
||||||
LOG(LOG_MISC,LOG_DEBUG)("Win32: Preparing main window to accept files dragged in from the Windows shell");
|
LOG(LOG_MISC,LOG_DEBUG)("Win32: Preparing main window to accept files dragged in from the Windows shell");
|
||||||
|
|
||||||
SDL_PumpEvents(); SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE);
|
SDL_PumpEvents();
|
||||||
DragAcceptFiles(GetHWND(), TRUE);
|
DragAcceptFiles(GetHWND(), TRUE);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void GFX_ForceRedrawScreen(void) {
|
void GFX_ForceRedrawScreen(void) {
|
||||||
@ -3519,6 +3532,13 @@ void change_output(int output) {
|
|||||||
resetFontSize();
|
resetFontSize();
|
||||||
resetreq = true;
|
resetreq = true;
|
||||||
}
|
}
|
||||||
|
#if defined(WIN32) && !defined(HX_DOS)
|
||||||
|
HMENU sysmenu = GetSystemMenu(GetHWND(), TRUE);
|
||||||
|
if (ttfpos>-1 && sysmenu != NULL) {
|
||||||
|
EnableMenuItem(sysmenu, ttfpos, MF_BYPOSITION|(TTF_using()?MF_ENABLED:MF_DISABLED));
|
||||||
|
EnableMenuItem(sysmenu, ttfpos+1, MF_BYPOSITION|(TTF_using()?MF_ENABLED:MF_DISABLED));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
mainMenu.get_item("mapper_ttf_incsize").enable(TTF_using()).refresh_item(mainMenu);
|
mainMenu.get_item("mapper_ttf_incsize").enable(TTF_using()).refresh_item(mainMenu);
|
||||||
mainMenu.get_item("mapper_ttf_decsize").enable(TTF_using()).refresh_item(mainMenu);
|
mainMenu.get_item("mapper_ttf_decsize").enable(TTF_using()).refresh_item(mainMenu);
|
||||||
mainMenu.get_item("ttf_showbold").enable(TTF_using()).check(showbold).refresh_item(mainMenu);
|
mainMenu.get_item("ttf_showbold").enable(TTF_using()).check(showbold).refresh_item(mainMenu);
|
||||||
@ -4581,7 +4601,7 @@ void resetFontSize() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void decreaseFontSize() {
|
void decreaseFontSize() {
|
||||||
if (ttf.inUse && ttf.pointsize > 10) {
|
if (ttf.inUse && ttf.pointsize > 10) {
|
||||||
GFX_SelectFontByPoints(ttf.pointsize - (ttf.DOSBox ? 2 : 1));
|
GFX_SelectFontByPoints(ttf.pointsize - (ttf.DOSBox ? 2 : 1));
|
||||||
GFX_SetSize(720+sdl.clip.x, 400+sdl.clip.y, sdl.draw.flags,sdl.draw.scalex,sdl.draw.scaley,sdl.draw.callback);
|
GFX_SetSize(720+sdl.clip.x, 400+sdl.clip.y, sdl.draw.flags,sdl.draw.scalex,sdl.draw.scaley,sdl.draw.callback);
|
||||||
@ -4594,7 +4614,7 @@ static void decreaseFontSize() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void increaseFontSize() {
|
void increaseFontSize() {
|
||||||
if (ttf.inUse) { // increase fontsize
|
if (ttf.inUse) { // increase fontsize
|
||||||
int maxWidth = sdl.desktop.full.width;
|
int maxWidth = sdl.desktop.full.width;
|
||||||
int maxHeight = sdl.desktop.full.height;
|
int maxHeight = sdl.desktop.full.height;
|
||||||
@ -5045,7 +5065,7 @@ static void GUI_StartUp() {
|
|||||||
MAPPER_AddHandler(ResetSystem, MK_r, MMODHOST, "reset", "Reset DOSBox-X", &item); /* Host+R (Host+CTRL+R acts funny on my Linux system) */
|
MAPPER_AddHandler(ResetSystem, MK_r, MMODHOST, "reset", "Reset DOSBox-X", &item); /* Host+R (Host+CTRL+R acts funny on my Linux system) */
|
||||||
item->set_text("Reset virtual machine");
|
item->set_text("Reset virtual machine");
|
||||||
|
|
||||||
MAPPER_AddHandler(RebootGuest, MK_s, MMODHOST, "reboot", "Reboot guest system", &item); /* Reboot guest system or integrated DOS */
|
MAPPER_AddHandler(RebootGuest, MK_b, MMODHOST, "reboot", "Reboot guest system", &item); /* Reboot guest system or integrated DOS */
|
||||||
item->set_text("Reboot guest system");
|
item->set_text("Reboot guest system");
|
||||||
|
|
||||||
#if !defined(HX_DOS)
|
#if !defined(HX_DOS)
|
||||||
@ -6440,7 +6460,7 @@ static void HandleTouchscreenFinger(SDL_TouchFingerEvent * finger) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WIN32) && !defined(C_SDL2) && !defined(HX_DOS)
|
#if defined(WIN32) && !defined(HX_DOS)
|
||||||
void MSG_WM_COMMAND_handle(SDL_SysWMmsg &Message);
|
void MSG_WM_COMMAND_handle(SDL_SysWMmsg &Message);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -6580,6 +6600,44 @@ void GFX_Events() {
|
|||||||
|
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
|
#if defined(WIN32) && !defined(HX_DOS)
|
||||||
|
case SDL_SYSWMEVENT:
|
||||||
|
switch( event.syswm.msg->msg.win.msg ) {
|
||||||
|
case WM_COMMAND:
|
||||||
|
MSG_WM_COMMAND_handle(/*&*/(*event.syswm.msg));
|
||||||
|
break;
|
||||||
|
case WM_SYSCOMMAND:
|
||||||
|
switch (event.syswm.msg->msg.win.wParam) {
|
||||||
|
case ID_WIN_SYSMENU_MAPPER:
|
||||||
|
extern void MAPPER_Run(bool pressed);
|
||||||
|
MAPPER_Run(false);
|
||||||
|
break;
|
||||||
|
case ID_WIN_SYSMENU_CFG_GUI:
|
||||||
|
extern void GUI_Run(bool pressed);
|
||||||
|
GUI_Run(false);
|
||||||
|
break;
|
||||||
|
case ID_WIN_SYSMENU_PAUSE:
|
||||||
|
extern void PauseDOSBox(bool pressed);
|
||||||
|
PauseDOSBox(true);
|
||||||
|
break;
|
||||||
|
case ID_WIN_SYSMENU_RESETSIZE:
|
||||||
|
resetFontSize();
|
||||||
|
break;
|
||||||
|
#if defined(USE_TTF)
|
||||||
|
case ID_WIN_SYSMENU_TTFINCSIZE:
|
||||||
|
increaseFontSize();
|
||||||
|
break;
|
||||||
|
case ID_WIN_SYSMENU_TTFDECSIZE:
|
||||||
|
decreaseFontSize();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
case SDL_WINDOWEVENT:
|
case SDL_WINDOWEVENT:
|
||||||
switch (event.window.event) {
|
switch (event.window.event) {
|
||||||
case SDL_WINDOWEVENT_MOVED:
|
case SDL_WINDOWEVENT_MOVED:
|
||||||
@ -6886,6 +6944,17 @@ void GFX_Events() {
|
|||||||
extern void PauseDOSBox(bool pressed);
|
extern void PauseDOSBox(bool pressed);
|
||||||
PauseDOSBox(true);
|
PauseDOSBox(true);
|
||||||
break;
|
break;
|
||||||
|
case ID_WIN_SYSMENU_RESETSIZE:
|
||||||
|
resetFontSize();
|
||||||
|
break;
|
||||||
|
#if defined(USE_TTF)
|
||||||
|
case ID_WIN_SYSMENU_TTFINCSIZE:
|
||||||
|
increaseFontSize();
|
||||||
|
break;
|
||||||
|
case ID_WIN_SYSMENU_TTFDECSIZE:
|
||||||
|
decreaseFontSize();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -7019,7 +7088,6 @@ void GFX_Events() {
|
|||||||
case SDL_VIDEOEXPOSE:
|
case SDL_VIDEOEXPOSE:
|
||||||
if (sdl.draw.callback && !glide.enabled) sdl.draw.callback( GFX_CallBackRedraw );
|
if (sdl.draw.callback && !glide.enabled) sdl.draw.callback( GFX_CallBackRedraw );
|
||||||
break;
|
break;
|
||||||
#ifdef WIN32
|
|
||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
case SDL_KEYUP:
|
case SDL_KEYUP:
|
||||||
// ignore event alt+tab
|
// ignore event alt+tab
|
||||||
@ -7029,6 +7097,7 @@ void GFX_Events() {
|
|||||||
if (event.key.keysym.sym==SDLK_RCTRL) sdl.rctrlstate = event.key.type;
|
if (event.key.keysym.sym==SDLK_RCTRL) sdl.rctrlstate = event.key.type;
|
||||||
if (event.key.keysym.sym==SDLK_LSHIFT) sdl.lshiftstate = event.key.type;
|
if (event.key.keysym.sym==SDLK_LSHIFT) sdl.lshiftstate = event.key.type;
|
||||||
if (event.key.keysym.sym==SDLK_RSHIFT) sdl.rshiftstate = event.key.type;
|
if (event.key.keysym.sym==SDLK_RSHIFT) sdl.rshiftstate = event.key.type;
|
||||||
|
#if defined(WIN32)
|
||||||
if (((event.key.keysym.sym==SDLK_TAB)) &&
|
if (((event.key.keysym.sym==SDLK_TAB)) &&
|
||||||
((sdl.laltstate==SDL_KEYDOWN) || (sdl.raltstate==SDL_KEYDOWN))) { MAPPER_LosingFocus(); break; }
|
((sdl.laltstate==SDL_KEYDOWN) || (sdl.raltstate==SDL_KEYDOWN))) { MAPPER_LosingFocus(); break; }
|
||||||
// This can happen as well.
|
// This can happen as well.
|
||||||
@ -7037,8 +7106,6 @@ void GFX_Events() {
|
|||||||
if ((event.key.keysym.sym == SDLK_TAB) && (GetTicks() - sdl.focus_ticks < 2)) break;
|
if ((event.key.keysym.sym == SDLK_TAB) && (GetTicks() - sdl.focus_ticks < 2)) break;
|
||||||
#endif
|
#endif
|
||||||
#if defined (MACOSX)
|
#if defined (MACOSX)
|
||||||
case SDL_KEYDOWN:
|
|
||||||
case SDL_KEYUP:
|
|
||||||
/* On macs CMD-Q is the default key to close an application */
|
/* On macs CMD-Q is the default key to close an application */
|
||||||
if (event.key.keysym.sym == SDLK_q && (event.key.keysym.mod == KMOD_RMETA || event.key.keysym.mod == KMOD_LMETA) ) {
|
if (event.key.keysym.sym == SDLK_q && (event.key.keysym.mod == KMOD_RMETA || event.key.keysym.mod == KMOD_LMETA) ) {
|
||||||
KillSwitch(true);
|
KillSwitch(true);
|
||||||
@ -10248,6 +10315,24 @@ bool sendkey_preset_menu_callback(DOSBoxMenu * const menu, DOSBoxMenu::item * co
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_all_shortcuts();
|
||||||
|
bool hostkey_preset_menu_callback(DOSBoxMenu * const menu, DOSBoxMenu::item * const menuitem) {
|
||||||
|
(void)menu;//UNUSED
|
||||||
|
if (menuitem->get_name()=="hostkey_ctrlalt") hostkeyalt=1;
|
||||||
|
else if (menuitem->get_name()=="hostkey_ctrlshift") hostkeyalt=2;
|
||||||
|
else if (menuitem->get_name()=="hostkey_altshift") hostkeyalt=3;
|
||||||
|
else hostkeyalt=0;
|
||||||
|
mainMenu.get_item("hostkey_ctrlalt").check(hostkeyalt==1).refresh_item(mainMenu);
|
||||||
|
mainMenu.get_item("hostkey_ctrlshift").check(hostkeyalt==2).refresh_item(mainMenu);
|
||||||
|
mainMenu.get_item("hostkey_altshift").check(hostkeyalt==3).refresh_item(mainMenu);
|
||||||
|
mainMenu.get_item("hostkey_mapper").check(hostkeyalt==0).refresh_item(mainMenu);
|
||||||
|
update_all_shortcuts();
|
||||||
|
#if DOSBOXMENU_TYPE == DOSBOXMENU_SDLDRAW
|
||||||
|
mainMenu.rebuild();
|
||||||
|
#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool help_open_url_callback(DOSBoxMenu * const menu, DOSBoxMenu::item * const menuitem) {
|
bool help_open_url_callback(DOSBoxMenu * const menu, DOSBoxMenu::item * const menuitem) {
|
||||||
(void)menu;//UNUSED
|
(void)menu;//UNUSED
|
||||||
std::string url="";
|
std::string url="";
|
||||||
@ -11185,6 +11270,10 @@ int main(int argc, char* argv[]) SDL_MAIN_NOEXCEPT {
|
|||||||
DOSBoxMenu::item &item = mainMenu.alloc_item(DOSBoxMenu::submenu_type_id,"MainSendKey");
|
DOSBoxMenu::item &item = mainMenu.alloc_item(DOSBoxMenu::submenu_type_id,"MainSendKey");
|
||||||
item.set_text("Send special key");
|
item.set_text("Send special key");
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
DOSBoxMenu::item &item = mainMenu.alloc_item(DOSBoxMenu::submenu_type_id,"MainHostKey");
|
||||||
|
item.set_text("Select host key");
|
||||||
|
}
|
||||||
{
|
{
|
||||||
DOSBoxMenu::item &item = mainMenu.alloc_item(DOSBoxMenu::submenu_type_id,"WheelToArrow");
|
DOSBoxMenu::item &item = mainMenu.alloc_item(DOSBoxMenu::submenu_type_id,"WheelToArrow");
|
||||||
item.set_text("Mouse wheel movements");
|
item.set_text("Mouse wheel movements");
|
||||||
@ -11841,6 +11930,10 @@ int main(int argc, char* argv[]) SDL_MAIN_NOEXCEPT {
|
|||||||
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_ctrlesc").set_text("Send Ctrl+Esc").set_callback_function(sendkey_preset_menu_callback);
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_ctrlesc").set_text("Send Ctrl+Esc").set_callback_function(sendkey_preset_menu_callback);
|
||||||
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_ctrlbreak").set_text("Send Ctrl+Break").set_callback_function(sendkey_preset_menu_callback);
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_ctrlbreak").set_text("Send Ctrl+Break").set_callback_function(sendkey_preset_menu_callback);
|
||||||
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_cad").set_text("Send Ctrl+Alt+Del").set_callback_function(sendkey_preset_menu_callback);
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_cad").set_text("Send Ctrl+Alt+Del").set_callback_function(sendkey_preset_menu_callback);
|
||||||
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"hostkey_ctrlalt").set_text("Ctrl+Alt").set_callback_function(hostkey_preset_menu_callback);
|
||||||
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"hostkey_ctrlshift").set_text("Ctrl+Shift").set_callback_function(hostkey_preset_menu_callback);
|
||||||
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"hostkey_altshift").set_text("Alt+Shift").set_callback_function(hostkey_preset_menu_callback);
|
||||||
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"hostkey_mapper").set_text("Mapper-defined").set_callback_function(hostkey_preset_menu_callback);
|
||||||
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_mapper_winlogo").set_text("Mapper \"Send special key\": logo key").set_callback_function(sendkey_mapper_menu_callback);
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_mapper_winlogo").set_text("Mapper \"Send special key\": logo key").set_callback_function(sendkey_mapper_menu_callback);
|
||||||
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_mapper_winmenu").set_text("Mapper \"Send special key\": menu key").set_callback_function(sendkey_mapper_menu_callback);
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_mapper_winmenu").set_text("Mapper \"Send special key\": menu key").set_callback_function(sendkey_mapper_menu_callback);
|
||||||
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_mapper_alttab").set_text("Mapper \"Send special key\": Alt+Tab").set_callback_function(sendkey_mapper_menu_callback);
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"sendkey_mapper_alttab").set_text("Mapper \"Send special key\": Alt+Tab").set_callback_function(sendkey_mapper_menu_callback);
|
||||||
@ -11873,6 +11966,12 @@ int main(int argc, char* argv[]) SDL_MAIN_NOEXCEPT {
|
|||||||
mainMenu.get_item("sendkey_mapper_ctrlesc").check(sendkeymap==4).refresh_item(mainMenu);
|
mainMenu.get_item("sendkey_mapper_ctrlesc").check(sendkeymap==4).refresh_item(mainMenu);
|
||||||
mainMenu.get_item("sendkey_mapper_ctrlbreak").check(sendkeymap==5).refresh_item(mainMenu);
|
mainMenu.get_item("sendkey_mapper_ctrlbreak").check(sendkeymap==5).refresh_item(mainMenu);
|
||||||
mainMenu.get_item("sendkey_mapper_cad").check(!sendkeymap).refresh_item(mainMenu);
|
mainMenu.get_item("sendkey_mapper_cad").check(!sendkeymap).refresh_item(mainMenu);
|
||||||
|
mainMenu.get_item("hostkey_ctrlalt").check(hostkeyalt==1).refresh_item(mainMenu);
|
||||||
|
mainMenu.get_item("hostkey_ctrlshift").check(hostkeyalt==2).refresh_item(mainMenu);
|
||||||
|
mainMenu.get_item("hostkey_altshift").check(hostkeyalt==3).refresh_item(mainMenu);
|
||||||
|
std::string mapper_keybind = mapper_event_keybind_string("host");
|
||||||
|
if (mapper_keybind.empty()) mapper_keybind = "unbound";
|
||||||
|
mainMenu.get_item("hostkey_mapper").check(hostkeyalt==0).set_text("Mapper-defined: "+mapper_keybind).refresh_item(mainMenu);
|
||||||
|
|
||||||
bool MENU_get_swapstereo(void);
|
bool MENU_get_swapstereo(void);
|
||||||
mainMenu.get_item("mixer_swapstereo").check(MENU_get_swapstereo()).refresh_item(mainMenu);
|
mainMenu.get_item("mixer_swapstereo").check(MENU_get_swapstereo()).refresh_item(mainMenu);
|
||||||
|
@ -314,7 +314,7 @@ bool export_ffmpeg = false;
|
|||||||
std::string capturedir;
|
std::string capturedir;
|
||||||
extern std::string savefilename;
|
extern std::string savefilename;
|
||||||
extern bool use_save_file, noremark_save_state, force_load_state;
|
extern bool use_save_file, noremark_save_state, force_load_state;
|
||||||
extern unsigned int sendkeymap;
|
extern unsigned int hostkeyalt, sendkeymap;
|
||||||
extern const char* RunningProgram;
|
extern const char* RunningProgram;
|
||||||
Bitu CaptureState = 0;
|
Bitu CaptureState = 0;
|
||||||
|
|
||||||
@ -1834,6 +1834,11 @@ void CAPTURE_Init() {
|
|||||||
mainMenu.get_item(slot).enable(!use_save_file).refresh_item(mainMenu);
|
mainMenu.get_item(slot).enable(!use_save_file).refresh_item(mainMenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
std::string hostkey = section->Get_string("hostkey");
|
||||||
|
if (hostkey=="ctrlalt") hostkeyalt=1;
|
||||||
|
else if (hostkey=="ctrlshift") hostkeyalt=2;
|
||||||
|
else if (hostkey=="altshift") hostkeyalt=3;
|
||||||
|
else hostkeyalt=0;
|
||||||
std::string mapsendkey = section->Get_string("mapper send key");
|
std::string mapsendkey = section->Get_string("mapper send key");
|
||||||
if (mapsendkey=="winlogo") sendkeymap=1;
|
if (mapsendkey=="winlogo") sendkeymap=1;
|
||||||
else if (mapsendkey=="winmenu") sendkeymap=2;
|
else if (mapsendkey=="winmenu") sendkeymap=2;
|
||||||
@ -1884,7 +1889,7 @@ void CAPTURE_Init() {
|
|||||||
|
|
||||||
#if !defined(C_EMSCRIPTEN)
|
#if !defined(C_EMSCRIPTEN)
|
||||||
// mapper shortcuts for capture
|
// mapper shortcuts for capture
|
||||||
MAPPER_AddHandler(CAPTURE_WaveEvent,MK_w,MMOD3|MMODHOST,"recwave","Record audio to WAV", &item);
|
MAPPER_AddHandler(CAPTURE_WaveEvent,MK_w,MMODHOST,"recwave","Record audio to WAV", &item);
|
||||||
item->set_text("Record audio to WAV");
|
item->set_text("Record audio to WAV");
|
||||||
|
|
||||||
MAPPER_AddHandler(CAPTURE_MTWaveEvent,MK_nothing,0,"recmtwave","Record to M.T. AVI", &item);
|
MAPPER_AddHandler(CAPTURE_MTWaveEvent,MK_nothing,0,"recmtwave","Record to M.T. AVI", &item);
|
||||||
@ -1896,10 +1901,10 @@ void CAPTURE_Init() {
|
|||||||
MAPPER_AddHandler(OPL_SaveRawEvent,MK_nothing,0,"caprawopl","Record FM/OPL output",&item);
|
MAPPER_AddHandler(OPL_SaveRawEvent,MK_nothing,0,"caprawopl","Record FM/OPL output",&item);
|
||||||
item->set_text("Record FM (OPL) output");
|
item->set_text("Record FM (OPL) output");
|
||||||
#if (C_SSHOT)
|
#if (C_SSHOT)
|
||||||
MAPPER_AddHandler(CAPTURE_ScreenShotEvent,MK_s,MMOD3|MMODHOST,"scrshot","Take screenshot", &item);
|
MAPPER_AddHandler(CAPTURE_ScreenShotEvent,MK_p,MMODHOST,"scrshot","Take screenshot", &item);
|
||||||
item->set_text("Take screenshot");
|
item->set_text("Take screenshot");
|
||||||
|
|
||||||
MAPPER_AddHandler(CAPTURE_VideoEvent,MK_v,MMOD3|MMODHOST,"video","Record video to AVI", &item);
|
MAPPER_AddHandler(CAPTURE_VideoEvent,MK_i,MMODHOST,"video","Record video to AVI", &item);
|
||||||
item->set_text("Record video to AVI");
|
item->set_text("Record video to AVI");
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -1619,7 +1619,9 @@ public:
|
|||||||
}
|
}
|
||||||
if (!strcasecmp(realnicstring,"list")) {
|
if (!strcasecmp(realnicstring,"list")) {
|
||||||
// print list and quit
|
// print list and quit
|
||||||
LOG_MSG(("\n"+niclist).c_str());
|
std::istringstream in(("\n"+niclist+"\n").c_str());
|
||||||
|
if (in) for (std::string line; std::getline(in, line); )
|
||||||
|
LOG_MSG(line.c_str());
|
||||||
pcap_freealldevs(alldevs);
|
pcap_freealldevs(alldevs);
|
||||||
load_success = false;
|
load_success = false;
|
||||||
return;
|
return;
|
||||||
|
@ -9164,10 +9164,10 @@ void BIOS_Init() {
|
|||||||
for (int i=0;i < MAX_ISA_PNP_SYSDEVNODES;i++) ISAPNP_SysDevNodes[i] = NULL;
|
for (int i=0;i < MAX_ISA_PNP_SYSDEVNODES;i++) ISAPNP_SysDevNodes[i] = NULL;
|
||||||
|
|
||||||
/* make sure CD swap and floppy swap mapper events are available */
|
/* make sure CD swap and floppy swap mapper events are available */
|
||||||
MAPPER_AddHandler(swapInNextDisk,MK_d,MMODHOST|MMOD1,"swapimg","Swap floppy drive",&item); /* Originally "Swap Image" but this version does not swap CDs */
|
MAPPER_AddHandler(swapInNextDisk,MK_o,MMODHOST,"swapimg","Swap floppy drive",&item); /* Originally "Swap Image" but this version does not swap CDs */
|
||||||
item->set_text("Swap floppy drive");
|
item->set_text("Swap floppy drive");
|
||||||
|
|
||||||
MAPPER_AddHandler(swapInNextCD,MK_c,MMODHOST|MMOD1,"swapcd","Swap CD drive",&item); /* Variant of "Swap Image" for CDs */
|
MAPPER_AddHandler(swapInNextCD,MK_d,MMODHOST,"swapcd","Swap CD drive",&item); /* Variant of "Swap Image" for CDs */
|
||||||
item->set_text("Swap CD drive");
|
item->set_text("Swap CD drive");
|
||||||
|
|
||||||
/* NTS: VM_EVENT_BIOS_INIT this callback must be first. */
|
/* NTS: VM_EVENT_BIOS_INIT this callback must be first. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user