Date: Fri, 29 Jan 2010 19:09:39 -0700 (MST) From: Warren Block <wblock@wonkity.com> To: freebsd-emulation@freebsd.org Subject: [patch] VBoxSDL --grabimmediate Message-ID: <alpine.BSF.2.00.1001291854080.47872@wonkity.com>
index | next in thread | raw e-mail
[-- Attachment #1 --]
The attached patch adds a --grabimmediate option to VBoxSDL. This lets
VBoxSDL start with the mouse and keyboard input already grabbed.
Use cases:
For console-only guests, the mouse pointer is useless and only goes away
when the user clicks.
Running full-screen guests, one would usually want the input grabbed
immediately anyway. (It could be argued that the --fullscreen option
should grab input immediately by default.)
To use, copy the patch to /usr/ports/emulators/virtualbox-ose and
rebuild the port.
Feedback welcome.
-Warren Block * Rapid City, South Dakota USA
[-- Attachment #2 --]
--- src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp.orig 2009-12-17 07:27:56.000000000 -0700
+++ src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp 2010-01-28 09:36:27.000000000 -0700
@@ -178,6 +178,7 @@
static const char *gHostKeyDisabledCombinations = "";
static const char *gpszPidFile;
static BOOL gfGrabbed = FALSE;
+static BOOL gfGrabImmediate = FALSE;
static BOOL gfGrabOnMouseClick = TRUE;
static BOOL gfFullscreenResize = FALSE;
static BOOL gfIgnoreNextResize = FALSE;
@@ -663,6 +664,7 @@
" --nohostkey Disable all hostkey combinations\n"
" --nohostkeys ... Disable specific hostkey combinations, see below for valid keys\n"
" --nograbonclick Disable mouse/keyboard grabbing on mouse click w/o additions\n"
+ " --grabimmediate Start with grab active\n"
" --detecthostkey Get the hostkey identifier and modifier state\n"
" --hostkey <key> {<key2>} <mod> Set the host key to the values obtained using --detecthostkey\n"
" --termacpi Send an ACPI power button event when closing the window\n"
@@ -1200,6 +1202,11 @@
{
gfGrabOnMouseClick = FALSE;
}
+ else if ( !strcmp(argv[curArg], "--grabimmediate")
+ || !strcmp(argv[curArg], "-grabimmediate"))
+ {
+ gfGrabImmediate = TRUE;
+ }
else if ( !strcmp(argv[curArg], "--termacpi")
|| !strcmp(argv[curArg], "-termacpi"))
{
@@ -1859,7 +1866,7 @@
// create our SDL framebuffer instance
gpFramebuffer[i] = new VBoxSDLFB(i, fFullscreen, fResizable, fShowSDLConfig, false,
fixedWidth, fixedHeight, fixedBPP);
if (!gpFramebuffer[i])
{
RTPrintf("Error: could not create framebuffer object!\n");
@@ -1996,6 +2003,12 @@
}
#endif
+ /*
+ * WB: --grabimmediate: grab mouse input as soon as possible.
+ */
+ if (gfGrabImmediate)
+ InputGrabStart();
+
rc = E_FAIL;
#ifdef VBOXSDL_ADVANCED_OPTIONS
if (fRawR0 != ~0U)
@@ -2306,7 +2319,7 @@
RTFileWrite(PidFile, pcszLf, strlen(pcszLf), NULL);
RTFileClose(PidFile);
}
/*
* Main event loop
*/
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1001291854080.47872>
