aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/kdrive
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw/kdrive')
-rw-r--r--xorg-server/hw/kdrive/ephyr/ephyr.c12
-rwxr-xr-xxorg-server/hw/kdrive/ephyr/ephyrinit.c6
-rw-r--r--xorg-server/hw/kdrive/ephyr/man/Xephyr.man3
3 files changed, 18 insertions, 3 deletions
diff --git a/xorg-server/hw/kdrive/ephyr/ephyr.c b/xorg-server/hw/kdrive/ephyr/ephyr.c
index 66f1de211..3c0b5568c 100644
--- a/xorg-server/hw/kdrive/ephyr/ephyr.c
+++ b/xorg-server/hw/kdrive/ephyr/ephyr.c
@@ -68,6 +68,7 @@ typedef struct _EphyrInputPrivate {
Bool EphyrWantGrayScale = 0;
Bool EphyrWantResize = 0;
+Bool EphyrWantNoHostGrab = 0;
Bool
host_has_extension(xcb_extension_t *extension)
@@ -652,7 +653,11 @@ ephyrInitScreen(ScreenPtr pScreen)
EPHYR_LOG("pScreen->myNum:%d\n", pScreen->myNum);
hostx_set_screen_number(screen, pScreen->myNum);
- hostx_set_win_title(screen, "(ctrl+shift grabs mouse and keyboard)");
+ if (EphyrWantNoHostGrab) {
+ hostx_set_win_title(screen, "xephyr");
+ } else {
+ hostx_set_win_title(screen, "(ctrl+shift grabs mouse and keyboard)");
+ }
pScreen->CreateColormap = ephyrCreateColormap;
#ifdef XV
@@ -1103,12 +1108,13 @@ ephyrProcessKeyRelease(xcb_generic_event_t *xev)
if (!keysyms)
keysyms = xcb_key_symbols_alloc(conn);
- if (((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_L
+ if (!EphyrWantNoHostGrab &&
+ (((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_L
|| xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Shift_R)
&& (key->state & XCB_MOD_MASK_CONTROL)) ||
((xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Control_L
|| xcb_key_symbols_get_keysym(keysyms, key->detail, 0) == XK_Control_R)
- && (key->state & XCB_MOD_MASK_SHIFT))) {
+ && (key->state & XCB_MOD_MASK_SHIFT)))) {
KdScreenInfo *screen = screen_from_window(key->event);
EphyrScrPriv *scrpriv = screen->driver;
diff --git a/xorg-server/hw/kdrive/ephyr/ephyrinit.c b/xorg-server/hw/kdrive/ephyr/ephyrinit.c
index c7358b52e..8311a5fce 100755
--- a/xorg-server/hw/kdrive/ephyr/ephyrinit.c
+++ b/xorg-server/hw/kdrive/ephyr/ephyrinit.c
@@ -33,6 +33,7 @@
extern Window EphyrPreExistingHostWin;
extern Bool EphyrWantGrayScale;
extern Bool EphyrWantResize;
+extern Bool EphyrWantNoHostGrab;
extern Bool kdHasPointer;
extern Bool kdHasKbd;
extern Bool ephyr_glamor, ephyr_glamor_gles2;
@@ -154,6 +155,7 @@ ddxUseMsg(void)
ErrorF("-name [name] define the name in the WM_CLASS property\n");
ErrorF
("-title [title] set the window title in the WM_NAME property\n");
+ ErrorF("-no-host-grab Disable grabbing the keyboard and mouse.\n");
ErrorF("\n");
}
#endif
@@ -363,6 +365,10 @@ ddxProcessArgument(int argc, char **argv, int i)
return 2;
}
/* end Xnest compat */
+ else if (!strcmp(argv[i], "-no-host-grab")) {
+ EphyrWantNoHostGrab = 1;
+ return 2;
+ }
return KdProcessArgument(argc, argv, i);
}
diff --git a/xorg-server/hw/kdrive/ephyr/man/Xephyr.man b/xorg-server/hw/kdrive/ephyr/man/Xephyr.man
index f14f6c864..c04379035 100644
--- a/xorg-server/hw/kdrive/ephyr/man/Xephyr.man
+++ b/xorg-server/hw/kdrive/ephyr/man/Xephyr.man
@@ -63,6 +63,9 @@ improvement is negligible.
.B -resizeable
Allow the Xephyr window to be resized, even if not embedded into a parent
window. By default, the Xephyr window has a fixed size.
+.TP 8
+.B -no-host-grab
+Disable grabbing the keyboard and mouse.
.SH "SIGNALS"
Send a SIGUSR1 to the server (e.g. pkill -USR1 Xephyr) to
toggle the debugging mode.