diff --git a/windows/x11drv/event.c b/windows/x11drv/event.c
index 0c484f4..01f9321 100644
--- a/windows/x11drv/event.c
+++ b/windows/x11drv/event.c
@@ -202,20 +202,20 @@
 }
 
 /***********************************************************************
- *           EVENT_Synchronize
+ *           X11DRV_Synchronize
  *
  * Synchronize with the X server. Should not be used too often.
  */
-void X11DRV_EVENT_Synchronize( void )
+void X11DRV_Synchronize( void )
 {
     TSXSync( display, False );
     EVENT_ProcessAllEvents( 0 );
 }
 
 /***********************************************************************
- *           EVENT_UserRepaintDisable
+ *           X11DRV_UserRepaintDisable
  */
-void X11DRV_EVENT_UserRepaintDisable( BOOL bDisabled )
+void X11DRV_UserRepaintDisable( BOOL bDisabled )
 {
     bUserRepaintDisabled = bDisabled;
 }
@@ -715,12 +715,12 @@
     int yOffset = pWnd? pWnd->rectWindow.top  : 0;
     WIN_ReleaseWndPtr(pWnd);
     
-    X11DRV_MOUSE_SendEvent( MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, 
+    X11DRV_SendEvent( MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, 
                             xOffset + event->x, yOffset + event->y,
                             X11DRV_EVENT_XStateToKeyState( event->state ), 
                             event->time, hWnd);
   } else {
-    X11DRV_MOUSE_SendEvent( MOUSEEVENTF_MOVE,
+    X11DRV_SendEvent( MOUSEEVENTF_MOVE,
                             event->x_root, event->y_root,
                             X11DRV_EVENT_XStateToKeyState( event->state ), 
                             event->time, hWnd);
@@ -774,7 +774,7 @@
         break;
   }
   
-  X11DRV_MOUSE_SendEvent( statusCodes[buttonNum], 
+  X11DRV_SendEvent( statusCodes[buttonNum], 
                           xOffset + event->x, yOffset + event->y,
                           MAKEWPARAM(keystate,wData),
                           event->time, hWnd);
@@ -822,7 +822,7 @@
       return;
   }
 
-  X11DRV_MOUSE_SendEvent( statusCodes[buttonNum], 
+  X11DRV_SendEvent( statusCodes[buttonNum], 
                           xOffset + event->x, yOffset + event->y,
                           keystate, event->time, hWnd);
 }
@@ -865,9 +865,9 @@
 }
 
 /**********************************************************************
- *              X11DRV_EVENT_CheckFocus
+ *              X11DRV_CheckFocus
  */
-BOOL X11DRV_EVENT_CheckFocus(void)
+BOOL X11DRV_CheckFocus(void)
 {
   HWND   hWnd;
   Window xW;
@@ -1489,7 +1489,7 @@
       TRACE("\tPropertyDelete for atom %s on window %ld\n",
             TSXGetAtomName(event->display, event->atom), (long)event->window);
       
-      if (X11DRV_CLIPBOARD_IsSelectionowner())
+      if (X11DRV_IsSelectionOwner())
           X11DRV_CLIPBOARD_FreeResources( event->atom );
       break;
     }
@@ -1899,7 +1899,7 @@
     TSXRefreshKeyboardMapping(event);
 
     /* reinitialize Wine-X11 driver keyboard table */
-    X11DRV_KEYBOARD_Init();
+    X11DRV_InitKeyboard();
 }
 
 
@@ -1940,7 +1940,7 @@
 /* DGA2 event handlers */
 static void EVENT_DGAMotionEvent( XDGAMotionEvent *event )
 {
-  X11DRV_MOUSE_SendEvent( MOUSEEVENTF_MOVE, 
+  X11DRV_SendEvent( MOUSEEVENTF_MOVE, 
 		   event->dx, event->dy,
 		   X11DRV_EVENT_XStateToKeyState( event->state ), 
 		   event->time, DGAhwnd );
@@ -1971,7 +1971,7 @@
       break;
   }
   
-  X11DRV_MOUSE_SendEvent( statusCodes[buttonNum], 0, 0, keystate, event->time, DGAhwnd );
+  X11DRV_SendEvent( statusCodes[buttonNum], 0, 0, keystate, event->time, DGAhwnd );
 }
 
 static void EVENT_DGAButtonReleaseEvent( XDGAButtonEvent *event )
@@ -1999,7 +1999,7 @@
       break;
   }
   
-  X11DRV_MOUSE_SendEvent( statusCodes[buttonNum], 0, 0, keystate, event->time, DGAhwnd );
+  X11DRV_SendEvent( statusCodes[buttonNum], 0, 0, keystate, event->time, DGAhwnd );
 }
 
 #endif
