hw/kdrive/src/kdrive.c
hw/kdrive/src/kdrive.h Add -switchCmd option to set command that is executed whenever the VT is enabled or disabled. This permits input device to be customized by external apps when switching to X.
This commit is contained in:
parent
20bbd750d0
commit
918a8273ee
|
@ -59,6 +59,7 @@ Bool kdEnabled;
|
||||||
int kdSubpixelOrder;
|
int kdSubpixelOrder;
|
||||||
int kdVirtualTerminal = -1;
|
int kdVirtualTerminal = -1;
|
||||||
Bool kdSwitchPending;
|
Bool kdSwitchPending;
|
||||||
|
char *kdSwitchCmd;
|
||||||
DDXPointRec kdOrigin;
|
DDXPointRec kdOrigin;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -223,6 +224,25 @@ KdDisableScreen (ScreenPtr pScreen)
|
||||||
(*pScreenPriv->card->cfuncs->disable) (pScreen);
|
(*pScreenPriv->card->cfuncs->disable) (pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
KdDoSwitchCmd (char *reason)
|
||||||
|
{
|
||||||
|
if (kdSwitchCmd)
|
||||||
|
{
|
||||||
|
char *command = xalloc (strlen (kdSwitchCmd) +
|
||||||
|
1 +
|
||||||
|
strlen (reason) +
|
||||||
|
1);
|
||||||
|
if (!command)
|
||||||
|
return;
|
||||||
|
strcpy (command, kdSwitchCmd);
|
||||||
|
strcat (command, " ");
|
||||||
|
strcat (command, reason);
|
||||||
|
system (command);
|
||||||
|
xfree (command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
KdSuspend (void)
|
KdSuspend (void)
|
||||||
{
|
{
|
||||||
|
@ -240,6 +260,7 @@ KdSuspend (void)
|
||||||
(*card->cfuncs->restore) (card);
|
(*card->cfuncs->restore) (card);
|
||||||
}
|
}
|
||||||
KdDisableInput ();
|
KdDisableInput ();
|
||||||
|
KdDoSwitchCmd ("suspend");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,6 +305,7 @@ KdResume (void)
|
||||||
|
|
||||||
if (kdEnabled)
|
if (kdEnabled)
|
||||||
{
|
{
|
||||||
|
KdDoSwitchCmd ("resume");
|
||||||
for (card = kdCardInfo; card; card = card->next)
|
for (card = kdCardInfo; card; card = card->next)
|
||||||
{
|
{
|
||||||
(*card->cfuncs->preserve) (card);
|
(*card->cfuncs->preserve) (card);
|
||||||
|
@ -316,9 +338,7 @@ KdProcessSwitch (void)
|
||||||
if (kdEnabled)
|
if (kdEnabled)
|
||||||
KdDisableScreens ();
|
KdDisableScreens ();
|
||||||
else
|
else
|
||||||
{
|
|
||||||
KdEnableScreens ();
|
KdEnableScreens ();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -330,6 +350,7 @@ AbortDDX(void)
|
||||||
if (kdEnabled)
|
if (kdEnabled)
|
||||||
(*kdOsFuncs->Disable) ();
|
(*kdOsFuncs->Disable) ();
|
||||||
(*kdOsFuncs->Fini) ();
|
(*kdOsFuncs->Fini) ();
|
||||||
|
KdDoSwitchCmd ("stop");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,6 +369,7 @@ ddxUseMsg()
|
||||||
ErrorF("-videoTest Start the server, pause momentarily and exit\n");
|
ErrorF("-videoTest Start the server, pause momentarily and exit\n");
|
||||||
ErrorF("-origin X,Y Locates the next screen in the the virtual screen (Xinerama)\n");
|
ErrorF("-origin X,Y Locates the next screen in the the virtual screen (Xinerama)\n");
|
||||||
ErrorF("-mouse path[,n] Filename of mouse device, n is number of buttons\n");
|
ErrorF("-mouse path[,n] Filename of mouse device, n is number of buttons\n");
|
||||||
|
ErrorF("-switchCmd Command to execute on vt switch\n");
|
||||||
ErrorF("vtxx Use virtual terminal xx instead of the next available\n");
|
ErrorF("vtxx Use virtual terminal xx instead of the next available\n");
|
||||||
ErrorF("\n");
|
ErrorF("\n");
|
||||||
}
|
}
|
||||||
|
@ -755,6 +777,14 @@ KdProcessArgument (int argc, char **argv, int i)
|
||||||
UseMsg ();
|
UseMsg ();
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
if (!strcmp (argv[i], "-switchCmd"))
|
||||||
|
{
|
||||||
|
if ((i+1) < argc)
|
||||||
|
kdSwitchCmd = argv[i+1];
|
||||||
|
else
|
||||||
|
UseMsg ();
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
if (!strncmp (argv[i], "vt", 2) &&
|
if (!strncmp (argv[i], "vt", 2) &&
|
||||||
sscanf (argv[i], "vt%2d", &kdVirtualTerminal) == 1)
|
sscanf (argv[i], "vt%2d", &kdVirtualTerminal) == 1)
|
||||||
{
|
{
|
||||||
|
@ -779,8 +809,11 @@ KdOsInit (KdOsFuncs *pOsFuncs)
|
||||||
if (pOsFuncs)
|
if (pOsFuncs)
|
||||||
{
|
{
|
||||||
if (serverGeneration == 1)
|
if (serverGeneration == 1)
|
||||||
|
{
|
||||||
|
KdDoSwitchCmd ("start");
|
||||||
(*pOsFuncs->Init) ();
|
(*pOsFuncs->Init) ();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
|
|
|
@ -321,6 +321,7 @@ extern Bool kdSwitchPending;
|
||||||
extern Bool kdEmulateMiddleButton;
|
extern Bool kdEmulateMiddleButton;
|
||||||
extern Bool kdDisableZaphod;
|
extern Bool kdDisableZaphod;
|
||||||
extern int kdVirtualTerminal;
|
extern int kdVirtualTerminal;
|
||||||
|
extern char *kdSwitchCmd;
|
||||||
extern KdOsFuncs *kdOsFuncs;
|
extern KdOsFuncs *kdOsFuncs;
|
||||||
|
|
||||||
#define KdGetScreenPriv(pScreen) ((KdPrivScreenPtr) \
|
#define KdGetScreenPriv(pScreen) ((KdPrivScreenPtr) \
|
||||||
|
|
Loading…
Reference in New Issue
Block a user