mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-05-10 04:08:57 +08:00
Merge branch 'master' of https://github.com/joncampbell123/dosbox-x into xbrz
# Resolved conflicts: # src/gui/sdlmain.cpp
This commit is contained in:
commit
06dd860abf
16
CHANGELOG
16
CHANGELOG
@ -1,8 +1,11 @@
|
|||||||
TODO add version
|
TODO add version
|
||||||
- Improved shell:
|
- INT 10h AH=10h now ignores AL=3 in PCjr mode.
|
||||||
|
- Fixed keyboard handler bug in PCjr mode that caused some CPU
|
||||||
|
register corruption and general crashiness in games.
|
||||||
|
- Improved shell: (Aybe, Joncampbell123)
|
||||||
- Ctrl+Left and Ctrl+Right permits word-navigation.
|
- Ctrl+Left and Ctrl+Right permits word-navigation.
|
||||||
- Added emulation of 'Ins' key behavior.
|
- Added emulation of 'Ins' key behavior.
|
||||||
- Num Lock stays on at startup and is synchronized with host
|
- Num Lock stays on at startup and is synchronized with host (Aybe)
|
||||||
when DOSBox-X window gains focus (Windows). (Aybe)
|
when DOSBox-X window gains focus (Windows). (Aybe)
|
||||||
- Added visual feedback to Hat/D-pad buttons in mapper. (Aybe)
|
- Added visual feedback to Hat/D-pad buttons in mapper. (Aybe)
|
||||||
- Added documentation for 'dir' command sorting switches. (Aybe)
|
- Added documentation for 'dir' command sorting switches. (Aybe)
|
||||||
@ -12,6 +15,15 @@ TODO add version
|
|||||||
- Axes can be remapped for devices with questionable layout.
|
- Axes can be remapped for devices with questionable layout.
|
||||||
- User-settable deadzones for joystick bindings in mapper,
|
- User-settable deadzones for joystick bindings in mapper,
|
||||||
mappings like WSAD keys to axes is less frustrating.
|
mappings like WSAD keys to axes is less frustrating.
|
||||||
|
- Improve mouse support:
|
||||||
|
- Added pointer integration behavior for DOS applications.
|
||||||
|
- Auto-lock is now disabled by default, this results in
|
||||||
|
pointer integration becoming the default behavior.
|
||||||
|
- Added feedback for auto-lock state, can be visual or auditive.
|
||||||
|
- When the mouse is not locked, its position is exactly where
|
||||||
|
the mouse is reported by the system. This results in a more
|
||||||
|
consistent experience between DOSBox-X and host OS,
|
||||||
|
e.g. High DPI mouse don't become suddenly slow in DOSBox-X.
|
||||||
|
|
||||||
0.82.7
|
0.82.7
|
||||||
- Mac OS X builds now honor showmenu=false by leaving the
|
- Mac OS X builds now honor showmenu=false by leaving the
|
||||||
|
@ -90,6 +90,7 @@ sst=false
|
|||||||
# output: What video system to use for output.
|
# output: What video system to use for output.
|
||||||
# Possible values: surface, overlay, opengl, openglnb, openglhq, ddraw.
|
# Possible values: surface, overlay, opengl, openglnb, openglhq, ddraw.
|
||||||
# autolock: Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock)
|
# autolock: Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock)
|
||||||
|
# synced: Mouse position reported will be exactly where user hand has moved to.
|
||||||
# sensitivity: Mouse sensitivity.
|
# sensitivity: Mouse sensitivity.
|
||||||
# waitonerror: Wait before closing the console if dosbox has an error.
|
# waitonerror: Wait before closing the console if dosbox has an error.
|
||||||
# priority: Priority levels for dosbox. Second entry behind the comma is for when dosbox is not focused/minimized.
|
# priority: Priority levels for dosbox. Second entry behind the comma is for when dosbox is not focused/minimized.
|
||||||
@ -106,6 +107,7 @@ fullresolution=desktop
|
|||||||
windowresolution=original
|
windowresolution=original
|
||||||
output=surface
|
output=surface
|
||||||
autolock=true
|
autolock=true
|
||||||
|
synced=false
|
||||||
sensitivity=100
|
sensitivity=100
|
||||||
waitonerror=true
|
waitonerror=true
|
||||||
priority=higher,normal
|
priority=higher,normal
|
||||||
@ -386,6 +388,8 @@ showmenu=true
|
|||||||
# try setting this option. Else, leave it turned off. Changes to other VGA CRTC registers will trigger
|
# try setting this option. Else, leave it turned off. Changes to other VGA CRTC registers will trigger
|
||||||
# a DOSBox mode change as normal regardless of this setting.
|
# a DOSBox mode change as normal regardless of this setting.
|
||||||
# enable pci bus: Enable PCI bus emulation
|
# enable pci bus: Enable PCI bus emulation
|
||||||
|
# vga palette update on full load: If set, all three bytes of the palette entry must be loaded before taking the color,
|
||||||
|
# which is fairly typical SVGA behavior. If not set, partial changes are allowed.
|
||||||
# ignore odd-even mode in non-cga modes: Some demoscene productions use VGA Mode X but accidentally enable odd/even mode.
|
# ignore odd-even mode in non-cga modes: Some demoscene productions use VGA Mode X but accidentally enable odd/even mode.
|
||||||
# Setting this option can correct for that and render the demo properly.
|
# Setting this option can correct for that and render the demo properly.
|
||||||
# This option forces VGA emulation to ignore odd/even mode except in text and CGA modes.
|
# This option forces VGA emulation to ignore odd/even mode except in text and CGA modes.
|
||||||
@ -489,6 +493,7 @@ ignore vblank wraparound=false
|
|||||||
enable vga resize delay=false
|
enable vga resize delay=false
|
||||||
resize only on vga active display width increase=false
|
resize only on vga active display width increase=false
|
||||||
enable pci bus=true
|
enable pci bus=true
|
||||||
|
vga palette update on full load=true
|
||||||
ignore odd-even mode in non-cga modes=false
|
ignore odd-even mode in non-cga modes=false
|
||||||
|
|
||||||
[render]
|
[render]
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
/*auto-generated*/
|
/*auto-generated*/
|
||||||
#define UPDATED_STR "Jun 23, 2018 8:13:20am"
|
#define UPDATED_STR "Jun 27, 2018 11:42:01am"
|
||||||
#define COPYRIGHT_END_YEAR "2018"
|
#define COPYRIGHT_END_YEAR "2018"
|
||||||
|
@ -106,6 +106,14 @@ void GFX_OpenGLRedrawScreen(void);
|
|||||||
#include "keymap.h"
|
#include "keymap.h"
|
||||||
#include "control.h"
|
#include "control.h"
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
# define MIN(a,b) ((a) < (b) ? (a) : (b))
|
||||||
|
# define MAX(a,b) ((a) > (b) ? (a) : (b))
|
||||||
|
#else
|
||||||
|
# define MIN(a,b) std::min(a,b)
|
||||||
|
# define MAX(a,b) std::max(a,b)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if C_XBRZ
|
#if C_XBRZ
|
||||||
#include <xBRZ/xbrz.h>
|
#include <xBRZ/xbrz.h>
|
||||||
#include <xBRZ/xbrz_tools.h>
|
#include <xBRZ/xbrz_tools.h>
|
||||||
@ -474,6 +482,13 @@ CDirect3D* d3d = NULL;
|
|||||||
# include <os2.h>
|
# include <os2.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
enum AUTOLOCK_FEEDBACK
|
||||||
|
{
|
||||||
|
AUTOLOCK_FEEDBACK_NONE,
|
||||||
|
AUTOLOCK_FEEDBACK_BEEP,
|
||||||
|
AUTOLOCK_FEEDBACK_FLASH
|
||||||
|
};
|
||||||
|
|
||||||
// do not specify any defaults inside, it is zeroed at start of main()
|
// do not specify any defaults inside, it is zeroed at start of main()
|
||||||
struct SDL_Block {
|
struct SDL_Block {
|
||||||
bool inited;
|
bool inited;
|
||||||
@ -553,8 +568,8 @@ struct SDL_Block {
|
|||||||
SDL_cond *cond;
|
SDL_cond *cond;
|
||||||
struct {
|
struct {
|
||||||
bool autolock;
|
bool autolock;
|
||||||
|
AUTOLOCK_FEEDBACK autolock_feedback;
|
||||||
bool autoenable;
|
bool autoenable;
|
||||||
bool synced;
|
|
||||||
bool requestlock;
|
bool requestlock;
|
||||||
bool locked;
|
bool locked;
|
||||||
Bitu sensitivity;
|
Bitu sensitivity;
|
||||||
@ -2898,9 +2913,62 @@ void GFX_UpdateSDLCaptureState(void) {
|
|||||||
GFX_SetTitle(-1,-1,-1,false);
|
GFX_SetTitle(-1,-1,-1,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if WIN32
|
||||||
|
void CaptureMouseNotifyWin32()
|
||||||
|
{
|
||||||
|
const auto lck = sdl.mouse.locked;
|
||||||
|
switch (sdl.mouse.autolock_feedback)
|
||||||
|
{
|
||||||
|
case AUTOLOCK_FEEDBACK_NONE: break;
|
||||||
|
case AUTOLOCK_FEEDBACK_BEEP:
|
||||||
|
{
|
||||||
|
const auto lo = 1000;
|
||||||
|
const auto hi = 2000;
|
||||||
|
const auto t1 = 50;
|
||||||
|
const auto t2 = 25;
|
||||||
|
const auto f1 = lck ? hi : lo;
|
||||||
|
const auto f2 = lck ? lo : hi;
|
||||||
|
const auto tt = lck ? t1 : t2;
|
||||||
|
Beep(f1, tt);
|
||||||
|
Beep(f2, tt);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AUTOLOCK_FEEDBACK_FLASH:
|
||||||
|
{
|
||||||
|
const auto cnt = lck ? 4 : 2;
|
||||||
|
const auto tim = lck ? 80 : 40;
|
||||||
|
const auto wnd = GetHWND();
|
||||||
|
if (wnd != nullptr)
|
||||||
|
{
|
||||||
|
FLASHWINFO fi;
|
||||||
|
fi.cbSize = sizeof(FLASHWINFO);
|
||||||
|
fi.hwnd = wnd;
|
||||||
|
fi.dwFlags = FLASHW_CAPTION;
|
||||||
|
fi.uCount = cnt;
|
||||||
|
fi.dwTimeout = tim;
|
||||||
|
FlashWindowEx(&fi);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void CaptureMouseNotify()
|
||||||
|
{
|
||||||
|
#if WIN32
|
||||||
|
CaptureMouseNotifyWin32();
|
||||||
|
#else
|
||||||
|
// TODO
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void CaptureMouse(bool pressed) {
|
static void CaptureMouse(bool pressed) {
|
||||||
if (!pressed)
|
if (!pressed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
CaptureMouseNotify();
|
||||||
GFX_CaptureMouse();
|
GFX_CaptureMouse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4100,9 +4168,17 @@ static void GUI_StartUp() {
|
|||||||
sdl.desktop.full.height=width;
|
sdl.desktop.full.height=width;
|
||||||
}
|
}
|
||||||
sdl.mouse.autoenable=section->Get_bool("autolock");
|
sdl.mouse.autoenable=section->Get_bool("autolock");
|
||||||
sdl.mouse.synced=section->Get_bool("synced");
|
|
||||||
if (!sdl.mouse.autoenable) SDL_ShowCursor(SDL_DISABLE);
|
if (!sdl.mouse.autoenable) SDL_ShowCursor(SDL_DISABLE);
|
||||||
sdl.mouse.autolock=false;
|
sdl.mouse.autolock=false;
|
||||||
|
|
||||||
|
const std::string feedback = section->Get_string("autolock_feedback");
|
||||||
|
if (feedback == "none")
|
||||||
|
sdl.mouse.autolock_feedback = AUTOLOCK_FEEDBACK_NONE;
|
||||||
|
else if (feedback == "beep")
|
||||||
|
sdl.mouse.autolock_feedback = AUTOLOCK_FEEDBACK_BEEP;
|
||||||
|
else if (feedback == "flash")
|
||||||
|
sdl.mouse.autolock_feedback = AUTOLOCK_FEEDBACK_FLASH;
|
||||||
|
|
||||||
sdl.mouse.sensitivity=(unsigned int)section->Get_int("sensitivity");
|
sdl.mouse.sensitivity=(unsigned int)section->Get_int("sensitivity");
|
||||||
std::string output=section->Get_string("output");
|
std::string output=section->Get_string("output");
|
||||||
|
|
||||||
@ -4624,35 +4700,38 @@ static void HandleMouseMotion(SDL_MouseMotionEvent * motion) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
user_cursor_x = motion->x - sdl.clip.x;
|
user_cursor_x = motion->x - sdl.clip.x;
|
||||||
user_cursor_y = motion->y - sdl.clip.y;
|
user_cursor_y = motion->y - sdl.clip.y;
|
||||||
user_cursor_locked = sdl.mouse.locked;
|
user_cursor_locked = sdl.mouse.locked;
|
||||||
user_cursor_synced = sdl.mouse.synced;
|
user_cursor_synced = !user_cursor_locked;
|
||||||
user_cursor_sw = sdl.clip.w;
|
user_cursor_sw = sdl.clip.w;
|
||||||
user_cursor_sh = sdl.clip.h;
|
user_cursor_sh = sdl.clip.h;
|
||||||
|
|
||||||
if (sdl.mouse.locked || !sdl.mouse.autoenable)
|
auto xrel = static_cast<float>(motion->xrel) * sdl.mouse.sensitivity / 100.0f;
|
||||||
Mouse_CursorMoved((float)motion->xrel*sdl.mouse.sensitivity/100.0f,
|
auto yrel = static_cast<float>(motion->yrel) * sdl.mouse.sensitivity / 100.0f;
|
||||||
(float)motion->yrel*sdl.mouse.sensitivity/100.0f,
|
auto x = static_cast<float>(motion->x - sdl.clip.x) / (sdl.clip.w - 1) * sdl.mouse.sensitivity / 100.0f;
|
||||||
(float)(motion->x-sdl.clip.x)/(sdl.clip.w-1)*sdl.mouse.sensitivity/100.0f,
|
auto y = static_cast<float>(motion->y - sdl.clip.y) / (sdl.clip.h - 1) * sdl.mouse.sensitivity / 100.0f;
|
||||||
(float)(motion->y-sdl.clip.y)/(sdl.clip.h-1)*sdl.mouse.sensitivity/100.0f,
|
auto emu = sdl.mouse.locked;
|
||||||
sdl.mouse.locked);
|
|
||||||
else if (mouse_notify_mode != 0) { /* for mouse integration driver */
|
|
||||||
Mouse_CursorMoved(0,0,0,0,sdl.mouse.locked);
|
|
||||||
if (motion->x >= sdl.clip.x && motion->y >= sdl.clip.y &&
|
|
||||||
motion->x < (sdl.clip.x+sdl.clip.w) && motion->y < (sdl.clip.y+sdl.clip.h))
|
|
||||||
SDL_ShowCursor(SDL_DISABLE); /* TODO: If guest has not read mouse cursor position within 250ms show cursor again */
|
|
||||||
else if (Mouse_GetButtonState() != 0)
|
|
||||||
SDL_ShowCursor(SDL_DISABLE); /* TODO: If guest has not read mouse cursor position within 250ms show cursor again */
|
|
||||||
else
|
|
||||||
SDL_ShowCursor(SDL_ENABLE);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
SDL_ShowCursor(SDL_ENABLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sdl.mouse.synced)
|
if (mouse_notify_mode != 0)
|
||||||
SDL_ShowCursor(SDL_ENABLE); // TODO remove
|
{
|
||||||
|
/* for mouse integration driver */
|
||||||
|
xrel = yrel = x = y = 0.0f;
|
||||||
|
emu = sdl.mouse.locked;
|
||||||
|
const auto isdown = Mouse_GetButtonState() != 0;
|
||||||
|
const auto inside =
|
||||||
|
motion->x >= sdl.clip.x && motion->x < sdl.clip.x + sdl.clip.w &&
|
||||||
|
motion->y >= sdl.clip.y && motion->y < sdl.clip.y + sdl.clip.h;
|
||||||
|
SDL_ShowCursor(isdown || inside ? SDL_DISABLE : SDL_ENABLE);
|
||||||
|
/* TODO: If guest has not read mouse cursor position within 250ms show cursor again */
|
||||||
|
}
|
||||||
|
bool MOUSE_IsHidden();
|
||||||
|
if (!user_cursor_locked)
|
||||||
|
{
|
||||||
|
/* Show only when DOS app is not using mouse */
|
||||||
|
SDL_ShowCursor(MOUSE_IsHidden() ? SDL_ENABLE : SDL_DISABLE);
|
||||||
|
}
|
||||||
|
Mouse_CursorMoved(xrel, yrel, x, y, emu);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DOSBOXMENU_TYPE == DOSBOXMENU_SDLDRAW /* SDL drawn menus */
|
#if DOSBOXMENU_TYPE == DOSBOXMENU_SDLDRAW /* SDL drawn menus */
|
||||||
@ -5185,6 +5264,7 @@ static void HandleMouseButton(SDL_MouseButtonEvent * button) {
|
|||||||
case SDL_PRESSED:
|
case SDL_PRESSED:
|
||||||
if (inMenu) return;
|
if (inMenu) return;
|
||||||
if (sdl.mouse.requestlock && !sdl.mouse.locked && mouse_notify_mode == 0) {
|
if (sdl.mouse.requestlock && !sdl.mouse.locked && mouse_notify_mode == 0) {
|
||||||
|
CaptureMouseNotify();
|
||||||
GFX_CaptureMouse();
|
GFX_CaptureMouse();
|
||||||
// Dont pass klick to mouse handler
|
// Dont pass klick to mouse handler
|
||||||
break;
|
break;
|
||||||
@ -5834,6 +5914,89 @@ static void HandleTouchscreenFinger(SDL_TouchFingerEvent * finger) {
|
|||||||
void MSG_WM_COMMAND_handle(SDL_SysWMmsg &Message);
|
void MSG_WM_COMMAND_handle(SDL_SysWMmsg &Message);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct mouse_pos
|
||||||
|
{
|
||||||
|
long x = 0;
|
||||||
|
long y = 0;
|
||||||
|
} mouse_pos;
|
||||||
|
|
||||||
|
bool mouse_inside = false;
|
||||||
|
|
||||||
|
void GFX_EventsMouseProcess(const long x, const long y, const long rx, const long ry)
|
||||||
|
{
|
||||||
|
const auto x1 = sdl.clip.x;
|
||||||
|
const auto x2 = x1 + sdl.clip.w - 1;
|
||||||
|
const auto y1 = sdl.clip.y;
|
||||||
|
const auto y2 = y1 + sdl.clip.h - 1;
|
||||||
|
const auto in = x >= x1 && x <= x2 && y >= y1 && y <= y2;
|
||||||
|
|
||||||
|
if (mouse_inside && !in)
|
||||||
|
{
|
||||||
|
const auto x3 = max((int)x1, min((int)x2, (int)x));
|
||||||
|
const auto y3 = max((int)y1, min((int)y2, (int)y));
|
||||||
|
SDL_Event evt;
|
||||||
|
evt.type = SDL_MOUSEMOTION;
|
||||||
|
evt.motion.state = 0;
|
||||||
|
evt.motion.which = 0;
|
||||||
|
evt.motion.x = x3;
|
||||||
|
evt.motion.y = y3;
|
||||||
|
evt.motion.xrel = rx;
|
||||||
|
evt.motion.yrel = ry;
|
||||||
|
SDL_PushEvent(&evt);
|
||||||
|
}
|
||||||
|
|
||||||
|
mouse_inside = in;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(WIN32)
|
||||||
|
void GFX_EventsMouseWin32()
|
||||||
|
{
|
||||||
|
/* Compute relative mouse movement */
|
||||||
|
|
||||||
|
POINT point;
|
||||||
|
SDL_SysWMinfo wmi;
|
||||||
|
|
||||||
|
SDL_VERSION(&wmi.version);
|
||||||
|
if (!SDL_GetWMInfo(&wmi))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!GetCursorPos(&point))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!ScreenToClient(wmi.child_window, &point))
|
||||||
|
return;
|
||||||
|
|
||||||
|
const auto x = point.x;
|
||||||
|
const auto y = point.y;
|
||||||
|
const auto rx = x - mouse_pos.x;
|
||||||
|
const auto ry = y - mouse_pos.y;
|
||||||
|
|
||||||
|
mouse_pos.x = x;
|
||||||
|
mouse_pos.y = y;
|
||||||
|
|
||||||
|
/* Let the method do the heavy uplifting */
|
||||||
|
GFX_EventsMouseProcess(x, y, rx, ry);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Processes mouse movements when outside the window.
|
||||||
|
*
|
||||||
|
* This method will send an extra mouse event to the SDL pump
|
||||||
|
* when some relative movement has occurred.
|
||||||
|
*/
|
||||||
|
void GFX_EventsMouse()
|
||||||
|
{
|
||||||
|
if (sdl.desktop.fullscreen || sdl.mouse.locked)
|
||||||
|
return;
|
||||||
|
|
||||||
|
#if WIN32
|
||||||
|
GFX_EventsMouseWin32();
|
||||||
|
#else
|
||||||
|
// TODO
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void GFX_Events() {
|
void GFX_Events() {
|
||||||
CheckMapperKeyboardLayout();
|
CheckMapperKeyboardLayout();
|
||||||
#if defined(C_SDL2) /* SDL 2.x---------------------------------- */
|
#if defined(C_SDL2) /* SDL 2.x---------------------------------- */
|
||||||
@ -5996,6 +6159,9 @@ void GFX_Events() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
GFX_EventsMouse();
|
||||||
|
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
@ -6056,7 +6222,11 @@ void GFX_Events() {
|
|||||||
CPU_Disable_SkipAutoAdjust();
|
CPU_Disable_SkipAutoAdjust();
|
||||||
BIOS_SynchronizeNumLock();
|
BIOS_SynchronizeNumLock();
|
||||||
} else {
|
} else {
|
||||||
if (sdl.mouse.locked) GFX_CaptureMouse();
|
if (sdl.mouse.locked)
|
||||||
|
{
|
||||||
|
CaptureMouseNotify();
|
||||||
|
GFX_CaptureMouse();
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(WIN32)
|
#if defined(WIN32)
|
||||||
if (sdl.desktop.fullscreen)
|
if (sdl.desktop.fullscreen)
|
||||||
@ -6504,11 +6674,13 @@ void SDL_SetupConfigSection() {
|
|||||||
Pstring->Set_help("What video system to use for output.");
|
Pstring->Set_help("What video system to use for output.");
|
||||||
Pstring->Set_values(outputs);
|
Pstring->Set_values(outputs);
|
||||||
|
|
||||||
Pbool = sdl_sec->Add_bool("autolock",Property::Changeable::Always,true);
|
Pbool = sdl_sec->Add_bool("autolock",Property::Changeable::Always, false);
|
||||||
Pbool->Set_help("Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock)");
|
Pbool->Set_help("Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock)");
|
||||||
|
|
||||||
Pbool = sdl_sec->Add_bool("synced",Property::Changeable::Always,false);
|
const char* feeds[] = { "none", "beep", "flash", nullptr};
|
||||||
Pbool->Set_help("Mouse position reported will be exactly where user hand has moved to.");
|
Pstring = sdl_sec->Add_string("autolock_feedback", Property::Changeable::Always, feeds[1]);
|
||||||
|
Pstring->Set_help("Autolock status feedback type, i.e. visual, auditive, none.");
|
||||||
|
Pstring->Set_values(feeds);
|
||||||
|
|
||||||
Pint = sdl_sec->Add_int("sensitivity",Property::Changeable::Always,100);
|
Pint = sdl_sec->Add_int("sensitivity",Property::Changeable::Always,100);
|
||||||
Pint->SetMinMax(1,1000);
|
Pint->SetMinMax(1,1000);
|
||||||
|
@ -131,6 +131,7 @@ Bitu INT10_Handler(void) {
|
|||||||
case 0x10: /* Palette functions */
|
case 0x10: /* Palette functions */
|
||||||
if (!IS_EGAVGA_ARCH && (reg_al>0x02)) break;
|
if (!IS_EGAVGA_ARCH && (reg_al>0x02)) break;
|
||||||
else if (!IS_VGA_ARCH && (reg_al>0x03)) break;
|
else if (!IS_VGA_ARCH && (reg_al>0x03)) break;
|
||||||
|
else if (machine==MCH_PCJR && (reg_al>0x02)) break; /* "Looking at the PCjr tech ref page A-61, ... the BIOS listing stops at subfunction 2." */
|
||||||
switch (reg_al) {
|
switch (reg_al) {
|
||||||
case 0x00: /* SET SINGLE PALETTE REGISTER */
|
case 0x00: /* SET SINGLE PALETTE REGISTER */
|
||||||
INT10_SetSinglePaletteRegister(reg_bl,reg_bh);
|
INT10_SetSinglePaletteRegister(reg_bl,reg_bh);
|
||||||
|
@ -1389,3 +1389,7 @@ void MOUSE_Init() {
|
|||||||
AddVMEventFunction(VM_EVENT_RESET,AddVMEventFunctionFuncPair(MOUSE_OnReset));
|
AddVMEventFunction(VM_EVENT_RESET,AddVMEventFunctionFuncPair(MOUSE_OnReset));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MOUSE_IsHidden()
|
||||||
|
{
|
||||||
|
return static_cast<bool>(mouse.hidden);
|
||||||
|
}
|
||||||
|
@ -120,57 +120,57 @@
|
|||||||
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<IncludePath>$(IncludePath);%DXSDK_DIR%\Include;</IncludePath>
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;</IncludePath>
|
||||||
<LibraryPath>$(LibraryPath);%DXSDK_DIR%\Lib;</LibraryPath>
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib;</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug SDL2|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug SDL2|Win32'">
|
||||||
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<IncludePath>$(IncludePath);%DXSDK_DIR%\Include;</IncludePath>
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;</IncludePath>
|
||||||
<LibraryPath>$(LibraryPath);%DXSDK_DIR%\Lib;$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</LibraryPath>
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib;$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<IncludePath>$(IncludePath);%DXSDK_DIR%\Include;</IncludePath>
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;</IncludePath>
|
||||||
<LibraryPath>$(LibraryPath);%DXSDK_DIR%\Lib;</LibraryPath>
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib;</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug SDL2|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug SDL2|x64'">
|
||||||
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<IncludePath>$(IncludePath);%DXSDK_DIR%\Include;</IncludePath>
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;</IncludePath>
|
||||||
<LibraryPath>$(LibraryPath);%DXSDK_DIR%\Lib;$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</LibraryPath>
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib;$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<IncludePath>$(IncludePath);%DXSDK_DIR%\Include;</IncludePath>
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;</IncludePath>
|
||||||
<LibraryPath>$(LibraryPath);%DXSDK_DIR%\Lib;</LibraryPath>
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib;</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release SDL2|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release SDL2|Win32'">
|
||||||
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<IncludePath>$(IncludePath);%DXSDK_DIR%\Include;</IncludePath>
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;</IncludePath>
|
||||||
<LibraryPath>$(LibraryPath);%DXSDK_DIR%\Lib;$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</LibraryPath>
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib;$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<IncludePath>$(IncludePath);%DXSDK_DIR%\Include;</IncludePath>
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;</IncludePath>
|
||||||
<LibraryPath>$(LibraryPath);%DXSDK_DIR%\Lib;</LibraryPath>
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib;</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release SDL2|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release SDL2|x64'">
|
||||||
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\obj\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<IncludePath>$(IncludePath);%DXSDK_DIR%\Include;</IncludePath>
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;</IncludePath>
|
||||||
<LibraryPath>$(LibraryPath);%DXSDK_DIR%\Lib;$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</LibraryPath>
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib;$(SolutionDir)..\bin\$(Platform)\$(Configuration)\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@ -1126,4 +1126,4 @@ copy "$(SolutionDir)\..\CHANGELOG" "$(OutputPath)\changelog.txt"</Command>
|
|||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user