1diff -urw xc-orig/programs/Xserver/hw/xwin/InitOutput.c xc/programs/Xserver/hw/xwin/InitOutput.c 2--- xc-orig/programs/Xserver/hw/xwin/InitOutput.c 2012-03-16 14:45:50.640342810 +0100 3+++ xc/programs/Xserver/hw/xwin/InitOutput.c 2012-03-16 16:11:04.331114818 +0100 4@@ -97,6 +97,7 @@ 5 extern FARPROC g_fpTrackMouseEvent; 6 extern Bool g_fNoHelpMessageBox; 7 extern Bool g_fSilentDupError; 8+extern int g_iKioskX; 9 10 11 /* 12@@ -797,6 +798,10 @@ 13 /* We have to flag this as an explicit screen, even though it isn't */ 14 g_ScreenInfo[0].fExplicitScreen = TRUE; 15 } 16+ if (getenv("NX_KIOSK_X") != NULL) 17+ { 18+ g_iKioskX = atoi(getenv("NX_KIOSK_X")); 19+ } 20 } 21 22 23diff -urw xc-orig/programs/Xserver/hw/xwin/winglobals.c xc/programs/Xserver/hw/xwin/winglobals.c 24--- xc-orig/programs/Xserver/hw/xwin/winglobals.c 2012-03-16 14:45:50.650342808 +0100 25+++ xc/programs/Xserver/hw/xwin/winglobals.c 2012-03-16 16:11:04.332114818 +0100 26@@ -79,6 +79,7 @@ 27 Bool g_fSilentDupError = FALSE; 28 Bool g_fNoIcons = FALSE; 29 30+int g_iKioskX = 0; 31 32 /* 33 * Global variables for dynamically loaded libraries and 34diff -urw xc-orig/programs/Xserver/hw/xwin/win.h xc/programs/Xserver/hw/xwin/win.h 35--- xc-orig/programs/Xserver/hw/xwin/win.h 2012-03-16 14:45:50.653342808 +0100 36+++ xc/programs/Xserver/hw/xwin/win.h 2012-03-16 16:11:04.334114818 +0100 37@@ -206,6 +206,9 @@ 38 #define WM_TRAYICON (WM_USER + 1000) 39 #define WM_INIT_SYS_MENU (WM_USER + 1001) 40 #define WM_GIVEUP (WM_USER + 1002) 41+/* defined in winclipboardwndproc.c #define WM_USER_PASTE_COMPLETE (WM_USER + 1003) */ 42+/* defined in winclipboardwndproc.c #define WM_USER_SET_FILTER (WM_USER + 1004) */ 43+#define WM_USER_SET_KIOSK (WM_USER + 1005) 44 45 46 /* Local includes */ 47diff -urw xc-orig/programs/Xserver/hw/xwin/winmouse.c xc/programs/Xserver/hw/xwin/winmouse.c 48--- xc-orig/programs/Xserver/hw/xwin/winmouse.c 2009-03-18 18:13:40.000000000 +0100 49+++ xc/programs/Xserver/hw/xwin/winmouse.c 2012-03-16 16:11:04.335114818 +0100 50@@ -218,11 +218,26 @@ 51 * Enqueue a mouse button event 52 */ 53 54+extern winScreenInfo g_ScreenInfo[]; 55+extern int g_iLastScreen; 56+extern int g_iKioskX; 57+ 58 void 59 winMouseButtonsSendEvent (int iEventType, int iButton) 60 { 61 xEvent xCurrentEvent; 62 63+ if (g_iKioskX) { 64+ int FS = (-1 == g_iLastScreen) ? g_ScreenInfo[0].fFullScreen : g_ScreenInfo[g_iLastScreen].fFullScreen; 65+ if (FS) { 66+ int x = -1; 67+ int y = -1; 68+ miPointerPosition(&x, &y); 69+ if ((0 == y) && ((g_iKioskX - 1) == x)) 70+ return; 71+ } 72+ } 73+ 74 /* Load an xEvent and enqueue the event */ 75 xCurrentEvent.u.u.type = iEventType; 76 #if defined(XFree86Server) && defined(XINPUT) 77diff -urw xc-orig/programs/Xserver/hw/xwin/winwndproc.c xc/programs/Xserver/hw/xwin/winwndproc.c 78--- xc-orig/programs/Xserver/hw/xwin/winwndproc.c 2009-03-18 18:13:40.000000000 +0100 79+++ xc/programs/Xserver/hw/xwin/winwndproc.c 2012-03-16 16:12:07.167112017 +0100 80@@ -66,6 +66,7 @@ 81 extern HWND g_hwndKeyboardFocus; 82 extern Bool g_fSoftwareCursor; 83 extern DWORD g_dwCurrentThreadID; 84+extern int g_iKioskX; 85 86 87 /* 88@@ -1234,6 +1235,11 @@ 89 } 90 break; 91 92+ case WM_USER_SET_KIOSK: 93+ g_iKioskX = (int)wParam; 94+ ErrorF ("Setting Kiosk X to %d\n", g_iKioskX); 95+ return 0; 96+ 97 case WM_ENDSESSION: 98 case WM_GIVEUP: 99 /* Delete the tray Icon */ 100