From 7958dee1c60aadb36077fb4fa89d63f668759fb6 Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Tue, 7 Nov 2006 14:59:43 -0200 Subject: [PATCH] Let xglxKeybProc responsable for the keyboard mapping. Xgl with evdev input is fully functional using the libXevdev. --- hw/xgl/glx/xglx.c | 29 ++++++++++++++++++++--------- hw/xgl/xgl.h | 3 +++ hw/xgl/xglinput.c | 30 +----------------------------- 3 files changed, 24 insertions(+), 38 deletions(-) diff --git a/hw/xgl/glx/xglx.c b/hw/xgl/glx/xglx.c index a955fb1b0..7e165b4b5 100644 --- a/hw/xgl/glx/xglx.c +++ b/hw/xgl/glx/xglx.c @@ -1294,6 +1294,9 @@ xglxWakeupHandler (pointer blockData, int result, pointer pReadMask) { +#ifdef XEVDEV + if (!useEvdev) +#endif xglxEnqueueEvents (); } @@ -1533,9 +1536,25 @@ xglxKeybdProc (DeviceIntPtr pDevice, } break; case DEVICE_ON: pDev->on = TRUE; + +#ifdef XEVDEV + /* When evdev input is set the events are grabbed per default. + * EvdevGrabKeyboard is need to be changed to XGrabKeyboard + * xlib function thus Xgl will be able to choose if want or not + * be grabbed. */ + if (useEvdev) + EvdevGrabKeyboard (); +#endif + break; case DEVICE_OFF: case DEVICE_CLOSE: + +#ifdef XEVDEV + if (useEvdev) + EvdevUngrabKeyboard (); +#endif + pDev->on = FALSE; break; } @@ -1604,15 +1623,7 @@ xglxInitInput (int argc, #ifdef XEVDEV if (useEvdev) - { - xglInitInput (argc, argv); - - RegisterBlockAndWakeupHandlers (xglxBlockHandler, - xglWakeupHandler, - NULL); - - return; - } + OpenEvdevInput (kbdEvdevFile, ptrEvdevFile, xglEvdevReadInput); #endif pPointer = AddInputDevice (xglxPointerProc, TRUE); diff --git a/hw/xgl/xgl.h b/hw/xgl/xgl.h index c22c196c2..f5c3b8587 100644 --- a/hw/xgl/xgl.h +++ b/hw/xgl/xgl.h @@ -514,6 +514,9 @@ extern Bool useEvdev; extern char *kbdEvdevFile; extern char *ptrEvdevFile; +void +xglEvdevReadInput (void); + void xglWakeupHandler (pointer blockData, int result, diff --git a/hw/xgl/xglinput.c b/hw/xgl/xglinput.c index c355d78c0..aec0300a3 100644 --- a/hw/xgl/xglinput.c +++ b/hw/xgl/xglinput.c @@ -75,7 +75,7 @@ static int EventToXserver[] = { 248 }; -static void +void xglEvdevReadInput (void) { struct input_event ie; @@ -368,13 +368,6 @@ xglKeybdProc (DeviceIntPtr pDevice, if (pDev != LookupKeyboardDevice ()) return !Success; -#ifdef XEVDEV - if (useEvdev) - { - EvdevInit (pDevice); - return Success; - } -#endif ret = InitKeyboardDeviceStruct (pDev, &xglKeySyms, xglModMap, @@ -386,25 +379,9 @@ xglKeybdProc (DeviceIntPtr pDevice, break; case DEVICE_ON: pDev->on = TRUE; - -#ifdef XEVDEV - /* When evdev input is set the events are grabbed per default. - * EvdevGrabKeyboard is need to be changed to XGrabKeyboard - * xlib function thus Xgl will be able to choose if want or not - * be grabbed. */ - if (useEvdev) - EvdevGrabKeyboard (); -#endif - break; case DEVICE_OFF: case DEVICE_CLOSE: - -#ifdef XEVDEV - if (useEvdev) - EvdevUngrabKeyboard (); -#endif - pDev->on = FALSE; break; } @@ -417,11 +394,6 @@ xglInitInput (int argc, char **argv) { DeviceIntPtr pKeyboard, pPointer; -#ifdef XEVDEV - if (useEvdev) - OpenEvdevInput (kbdEvdevFile, ptrEvdevFile, xglEvdevReadInput); -#endif - pPointer = AddInputDevice (xglMouseProc, TRUE); pKeyboard = AddInputDevice (xglKeybdProc, TRUE);