Converted to the new debugging interface (done with the help of the
script written by Patrik Stridvall).

diff --git a/windows/input.c b/windows/input.c
index 6642c21..d55a51b 100644
--- a/windows/input.c
+++ b/windows/input.c
@@ -25,7 +25,7 @@
 #include "mouse.h"
 #include "message.h"
 #include "sysmetrics.h"
-#include "debug.h"
+#include "debugtools.h"
 #include "debugtools.h"
 #include "struct32.h"
 #include "winerror.h"
@@ -138,8 +138,8 @@
         keylp.lp1.context = (InputKeyStateTable[VK_MENU] & 0x80) != 0; /* 1 if alt */
 
 
-    TRACE(key, "            wParam=%04X, lParam=%08lX\n", bVk, keylp.lp2 );
-    TRACE(key, "            InputKeyState=%X\n", InputKeyStateTable[bVk] );
+    TRACE_(key)("            wParam=%04X, lParam=%08lX\n", bVk, keylp.lp2 );
+    TRACE_(key)("            InputKeyState=%X\n", InputKeyStateTable[bVk] );
 
     hardware_event( message, bVk, keylp.lp2, posX, posY, time, extra );
 }
@@ -246,7 +246,7 @@
 BOOL16 WINAPI EnableHardwareInput16(BOOL16 bEnable)
 {
   BOOL16 bOldState = InputEnabled;
-  FIXME(event,"(%d) - stub\n", bEnable);
+  FIXME_(event)("(%d) - stub\n", bEnable);
   InputEnabled = bEnable;
   return bOldState;
 }
@@ -289,7 +289,7 @@
     /* Get the messageQ for the current thread */
     if (!(pCurMsgQ = (MESSAGEQUEUE *)QUEUE_Lock( GetFastQueue16() )))
     {
-        WARN( win, "\tCurrent message queue not found. Exiting!\n" );
+        WARN_(win)("\tCurrent message queue not found. Exiting!\n" );
         goto CLEANUP;
     }
     
@@ -306,7 +306,7 @@
         wndPtr = WIN_FindWndPtr( hwnd );
         if (wndPtr)
         {
-            TRACE(win, "(0x%04x)\n", hwnd );
+            TRACE_(win)("(0x%04x)\n", hwnd );
             captureWnd   = hwnd;
             captureHT    = ht;
         }
@@ -321,7 +321,7 @@
             pMsgQ = (MESSAGEQUEUE *)QUEUE_Lock( wndPtr->hmemTaskQ );
             if ( !pMsgQ )
             {
-                WARN( win, "\tMessage queue not found. Exiting!\n" );
+                WARN_(win)("\tMessage queue not found. Exiting!\n" );
                 goto CLEANUP;
             }
     
@@ -402,7 +402,7 @@
     /* Get the messageQ for the current thread */
     if (!(pCurMsgQ = (MESSAGEQUEUE *)QUEUE_Lock( GetFastQueue16() )))
 {
-        TRACE( win, "GetCapture32:  Current message queue not found. Exiting!\n" );
+        TRACE_(win)("GetCapture32:  Current message queue not found. Exiting!\n" );
         return 0;
     }
     
@@ -462,7 +462,7 @@
  */
 VOID WINAPI GetKeyboardState(LPBYTE lpKeyState)
 {
-    TRACE(key, "(%p)\n", lpKeyState);
+    TRACE_(key)("(%p)\n", lpKeyState);
     if (lpKeyState != NULL) {
 	QueueKeyStateTable[VK_LBUTTON] = MouseButtonsStates[0] ? 0x80 : 0;
 	QueueKeyStateTable[VK_MBUTTON] = MouseButtonsStates[1] ? 0x80 : 0;
@@ -476,7 +476,7 @@
  */
 VOID WINAPI SetKeyboardState(LPBYTE lpKeyState)
 {
-    TRACE(key, "(%p)\n", lpKeyState);
+    TRACE_(key)("(%p)\n", lpKeyState);
     if (lpKeyState != NULL) {
 	memcpy(QueueKeyStateTable, lpKeyState, 256);
 	MouseButtonsStates[0] = (QueueKeyStateTable[VK_LBUTTON] != 0);
@@ -525,7 +525,7 @@
     memset( AsyncMouseButtonsStates, 0, sizeof(AsyncMouseButtonsStates) );
     memset( AsyncKeyStateTable, 0, sizeof(AsyncKeyStateTable) );
 
-    TRACE(key, "(%x) -> %x\n", nKey, retval);
+    TRACE_(key)("(%x) -> %x\n", nKey, retval);
     return retval;
 }
 
@@ -552,14 +552,14 @@
     	if (msg->message == WM_CHAR) {
         if ( !(fVirt & FALT) && !(fVirt & FVIRTKEY) )
         {
-   	  TRACE(accel,"found accel for WM_CHAR: ('%c')\n",
+   	  TRACE_(accel)("found accel for WM_CHAR: ('%c')\n",
 			msg->wParam&0xff);
    	  sendmsg=TRUE;
    	}  
       } else {
        if(fVirt & FVIRTKEY) {
 	INT mask = 0;
-        TRACE(accel,"found accel for virt_key %04x (scan %04x)\n",
+        TRACE_(accel)("found accel for virt_key %04x (scan %04x)\n",
   	                       msg->wParam,0xff & HIWORD(msg->lParam));                
 	if(GetKeyState(VK_SHIFT) & 0x8000) mask |= FSHIFT;
 	if(GetKeyState(VK_CONTROL) & 0x8000) mask |= FCONTROL;
@@ -567,7 +567,7 @@
 	if(mask == (fVirt & (FSHIFT | FCONTROL | FALT)))
           sendmsg=TRUE;			    
         else
-          TRACE(accel,", but incorrect SHIFT/CTRL/ALT-state\n");
+          TRACE_(accel)(", but incorrect SHIFT/CTRL/ALT-state\n");
        }
        else
        {
@@ -575,7 +575,7 @@
          {
            if ((fVirt & FALT) && (msg->lParam & 0x20000000))
            {                                                   /* ^^ ALT pressed */
-	    TRACE(accel,"found accel for Alt-%c\n", msg->wParam&0xff);
+	    TRACE_(accel)("found accel for Alt-%c\n", msg->wParam&0xff);
 	    sendmsg=TRUE;	    
 	   } 
          } 
@@ -634,7 +634,7 @@
           }
           if ( mesg==WM_COMMAND || mesg==WM_SYSCOMMAND )
           {
-              TRACE(accel,", sending %s, wParam=%0x\n",
+              TRACE_(accel)(", sending %s, wParam=%0x\n",
                   mesg==WM_COMMAND ? "WM_COMMAND" : "WM_SYSCOMMAND",
                   cmd);
 	      SendMessageA(hWnd, mesg, cmd, 0x00010000L);
@@ -650,9 +650,9 @@
 	    *   #5: it's a menu option, but window is iconic
 	    *   #6: it's a menu option, but disabled
 	    */
-	    TRACE(accel,", but won't send WM_{SYS}COMMAND, reason is #%d\n",mesg);
+	    TRACE_(accel)(", but won't send WM_{SYS}COMMAND, reason is #%d\n",mesg);
 	    if(mesg==0)
-	      ERR(accel, " unknown reason - please report!");
+	      ERR_(accel)(" unknown reason - please report!");
 	  }          
           return TRUE;         
       }
@@ -669,7 +669,7 @@
     LPACCEL16	lpAccelTbl = (LPACCEL16)LockResource16(hAccel);
     int 	i;
 
-    TRACE(accel,"hwnd=0x%x hacc=0x%x msg=0x%x wp=0x%x lp=0x%lx\n", hWnd, hAccel, msg->message, msg->wParam, msg->lParam);
+    TRACE_(accel)("hwnd=0x%x hacc=0x%x msg=0x%x wp=0x%x lp=0x%lx\n", hWnd, hAccel, msg->message, msg->wParam, msg->lParam);
     
     if (hAccel == 0 || msg == NULL ||
 	(msg->message != WM_KEYDOWN &&
@@ -677,12 +677,12 @@
 	 msg->message != WM_SYSKEYDOWN &&
 	 msg->message != WM_SYSKEYUP &&
 	 msg->message != WM_CHAR)) {
-      WARN(accel, "erraneous input parameters\n");
+      WARN_(accel)("erraneous input parameters\n");
       SetLastError(ERROR_INVALID_PARAMETER);
       return 0;
     }
 
-    TRACE(accel, "TranslateAccelerators hAccel=%04x, hWnd=%04x,"
+    TRACE_(accel)("TranslateAccelerators hAccel=%04x, hWnd=%04x,"
 	  "msg->hwnd=%04x, msg->message=%04x\n",
 	  hAccel,hWnd,msg->hwnd,msg->message);
 
@@ -693,7 +693,7 @@
                                       lpAccelTbl[i].key,lpAccelTbl[i].cmd))
 		return 1;
     } while ((lpAccelTbl[i++].fVirt & 0x80) == 0);
-    WARN(accel, "couldn't translate accelerator key\n");
+    WARN_(accel)("couldn't translate accelerator key\n");
     return 0;
 }
 
@@ -712,12 +712,12 @@
 	 msg->message != WM_SYSKEYDOWN &&
 	 msg->message != WM_SYSKEYUP &&
 	 msg->message != WM_CHAR)) {
-      WARN(accel, "erraneous input parameters\n");
+      WARN_(accel)("erraneous input parameters\n");
       SetLastError(ERROR_INVALID_PARAMETER);
       return 0;
     }
 
-    TRACE(accel, "TranslateAccelerators hAccel=%04x, hWnd=%04x,\
+    TRACE_(accel)("TranslateAccelerators hAccel=%04x, hWnd=%04x,\
 msg->hwnd=%04x, msg->message=%04x\n", hAccel,hWnd,msg->hwnd,msg->message);
     STRUCT32_MSG16to32(msg,&msg32);
 
@@ -729,7 +729,7 @@
                                       lpAccelTbl[i].key,lpAccelTbl[i].cmd))
 		return 1;
     } while ((lpAccelTbl[i++].fVirt & 0x80) == 0);
-    WARN(accel, "couldn't translate accelerator key\n");
+    WARN_(accel)("couldn't translate accelerator key\n");
     return 0;
 }
 
@@ -798,7 +798,7 @@
 UINT WINAPI MapVirtualKeyEx32A(UINT code, UINT maptype, HKL hkl)
 {
     if (hkl)
-    	FIXME(keyboard,"(%d,%d,0x%08lx), hkl unhandled!\n",code,maptype,(DWORD)hkl);
+    	FIXME_(keyboard)("(%d,%d,0x%08lx), hkl unhandled!\n",code,maptype,(DWORD)hkl);
     return MapVirtualKey16(code,maptype);
 }
 
@@ -830,7 +830,7 @@
         HKL layout;
         layout = GetSystemDefaultLCID(); /* FIXME */
         layout |= (layout<<16);          /* FIXME */
-        TRACE(keyboard,"returning %08x\n",layout);
+        TRACE_(keyboard)("returning %08x\n",layout);
         return layout;
 }
 
@@ -902,8 +902,8 @@
  */
 HKL WINAPI ActivateKeyboardLayout(HKL hLayout, UINT flags)
 {
-    TRACE(keyboard, "(%d, %d)\n", hLayout, flags);
-    ERR(keyboard,"Only default system keyboard layout supported. Call ignored.\n");
+    TRACE_(keyboard)("(%d, %d)\n", hLayout, flags);
+    ERR_(keyboard)("Only default system keyboard layout supported. Call ignored.\n");
     return 0;
 }
 
@@ -920,7 +920,7 @@
  */
 INT WINAPI GetKeyboardLayoutList(INT nBuff,HKL *layouts)
 {
-        TRACE(keyboard,"(%d,%p)\n",nBuff,layouts);
+        TRACE_(keyboard)("(%d,%p)\n",nBuff,layouts);
         if (!nBuff || !layouts)
             return 1;
 	if (layouts)
@@ -933,7 +933,7 @@
  *           RegisterHotKey			(USER32.433)
  */
 BOOL WINAPI RegisterHotKey(HWND hwnd,INT id,UINT modifiers,UINT vk) {
-	FIXME(keyboard,"(0x%08x,%d,0x%08x,%d): stub\n",hwnd,id,modifiers,vk);
+	FIXME_(keyboard)("(0x%08x,%d,0x%08x,%d): stub\n",hwnd,id,modifiers,vk);
 	return TRUE;
 }
 
@@ -941,7 +941,7 @@
  *           UnregisterHotKey			(USER32.565)
  */
 BOOL WINAPI UnregisterHotKey(HWND hwnd,INT id) {
-	FIXME(keyboard,"(0x%08x,%d): stub\n",hwnd,id);
+	FIXME_(keyboard)("(0x%08x,%d): stub\n",hwnd,id);
 	return TRUE;
 }
 
@@ -957,7 +957,7 @@
   int    cchBuff,
   UINT wFlags) {
 
-       FIXME(keyboard,": stub\n");
+       FIXME_(keyboard)(": stub\n");
        return 0;
 }
 
@@ -967,8 +967,8 @@
  */
 HKL WINAPI LoadKeyboardLayoutA(LPCSTR pwszKLID, UINT Flags)
 {
-    TRACE(keyboard, "(%s, %d)\n", pwszKLID, Flags);
-    ERR(keyboard,"Only default system keyboard layout supported. Call ignored.\n");
+    TRACE_(keyboard)("(%s, %d)\n", pwszKLID, Flags);
+    ERR_(keyboard)("Only default system keyboard layout supported. Call ignored.\n");
   return 0; 
 }
 
diff --git a/windows/keyboard.c b/windows/keyboard.c
index 7080f13..52c249f 100644
--- a/windows/keyboard.c
+++ b/windows/keyboard.c
@@ -19,7 +19,7 @@
 #include "heap.h"
 #include "keyboard.h"
 #include "message.h"
-#include "debug.h"
+#include "debugtools.h"
 #include "debugtools.h"
 #include "struct32.h"
 #include "winerror.h"
@@ -86,7 +86,7 @@
   
   if ( !DefKeybEventProc ) return;
   
-  TRACE( event, "(%d,%d,%04lX)\n", bVk, bScan, dwFlags );
+  TRACE_(event)("(%d,%d,%04lX)\n", bVk, bScan, dwFlags );
   
   wke.magic = WINE_KEYBDEVENT_MAGIC;
   wke.posX  = posX;
@@ -105,7 +105,7 @@
  */
 VOID WINAPI ScreenSwitchEnable16(WORD unused)
 {
-  FIXME(keyboard,"(%04x): stub\n",unused);
+  FIXME_(keyboard)("(%04x): stub\n",unused);
 }
 
 /**********************************************************************
@@ -113,7 +113,7 @@
  */
 DWORD WINAPI OemKeyScan(WORD wOemChar)
 {
-  TRACE(keyboard,"*OemKeyScan (%d)\n",wOemChar);
+  TRACE_(keyboard)("*OemKeyScan (%d)\n",wOemChar);
 
   return wOemChar;
 }
@@ -146,7 +146,7 @@
  */
 INT16 WINAPI GetKeyboardType16(INT16 nTypeFlag)
 {
-  TRACE(keyboard,"(%d)\n",nTypeFlag);
+  TRACE_(keyboard)("(%d)\n",nTypeFlag);
   switch(nTypeFlag)
     {
     case 0:      /* Keyboard type */
@@ -159,7 +159,7 @@
       return 12;   /* We're doing an 101 for now, so return 12 F-keys */
       break;
     default:     
-      WARN(keyboard, "Unknown type\n");
+      WARN_(keyboard)("Unknown type\n");
       return 0;    /* The book says 0 here, so 0 */
     }
 }
@@ -179,7 +179,7 @@
  */
 INT16 WINAPI GetKBCodePage16(void)
 {
-  TRACE(keyboard,"(void)\n");
+  TRACE_(keyboard)("(void)\n");
   return 850;
 }
 
diff --git a/windows/message.c b/windows/message.c
index 53ce3bd..60c08de 100644
--- a/windows/message.c
+++ b/windows/message.c
@@ -28,7 +28,7 @@
 #include "thread.h"
 #include "options.h"
 #include "struct32.h"
-#include "debug.h"
+#include "debugtools.h"
 
 DECLARE_DEBUG_CHANNEL(key)
 DECLARE_DEBUG_CHANNEL(msg)
@@ -689,7 +689,7 @@
         return 0;
     }
 
-    TRACE(sendmsg,"SM: %s [%04x] (%04x -> %04x)\n",
+    TRACE_(sendmsg)("SM: %s [%04x] (%04x -> %04x)\n",
 		    SPY_GetMsgName(msg), msg, queue->self, hDestQueue );
 
     /* fill up SMSG structure */
@@ -736,7 +736,7 @@
         {
 got:
              *pRes = smsg->lResult;
-             TRACE(sendmsg,"smResult = %08x\n", (unsigned)*pRes );
+             TRACE_(sendmsg)("smResult = %08x\n", (unsigned)*pRes );
              break;
         }
 
@@ -779,7 +779,7 @@
     QUEUE_Unlock( queue );
     QUEUE_Unlock( destQ );
     
-    TRACE(sendmsg,"done!\n");
+    TRACE_(sendmsg)("done!\n");
     return retVal;
 }
 
@@ -805,7 +805,7 @@
     if (!(queue = (MESSAGEQUEUE*)QUEUE_Lock( GetFastQueue16() )))
         return FALSE;
 
-    TRACE(sendmsg,"ReplyMessage, queue %04x\n", queue->self);
+    TRACE_(sendmsg)("ReplyMessage, queue %04x\n", queue->self);
 
 
     if (    !(smsg = queue->smWaiting)
@@ -816,7 +816,7 @@
     {
         /* This is the first reply, so pass result to sender */
 
-        TRACE( sendmsg,"\trpm: smResult = %08lx\n", (long) result );
+        TRACE_(sendmsg)("\trpm: smResult = %08lx\n", (long) result );
 
         EnterCriticalSection(&senderQ->cSection);
         
@@ -858,7 +858,7 @@
          an early reply or a timeout */
         if ( smsg->flags & SMSG_RECEIVER_CLEANS )
         {
-            TRACE( sendmsg,"Receiver cleans up!\n" );
+            TRACE_(sendmsg)("Receiver cleans up!\n" );
             HeapFree( SystemHeap, 0, smsg );
         }
         
@@ -1215,7 +1215,7 @@
 {
 	BOOL bRet = PeekMessageA(lpmsg,hwnd,min,max,wRemoveMsg);
 	if (bRet)
-	    FIXME(sendmsg, "(%s) unicode<->ascii\n", SPY_GetMsgName(lpmsg->message));
+	    FIXME_(sendmsg)("(%s) unicode<->ascii\n", SPY_GetMsgName(lpmsg->message));
 	return bRet;
 }
 
@@ -1232,7 +1232,7 @@
 
     STRUCT32_MSG32to16( &msg32, lpmsg );
 
-    TRACE(msg,"message %04x, hwnd %04x, filter(%04x - %04x)\n", lpmsg->message,
+    TRACE_(msg)("message %04x, hwnd %04x, filter(%04x - %04x)\n", lpmsg->message,
 		     				                 hwnd, first, last );
 
     return ret;
@@ -1278,7 +1278,7 @@
 {
     MSG_PeekMessage( lpmsg, hwnd, min, max, PM_REMOVE, FALSE );
     
-    TRACE(msg,"message %04x, hwnd %04x, filter(%04x - %04x)\n", lpmsg->message,
+    TRACE_(msg)("message %04x, hwnd %04x, filter(%04x - %04x)\n", lpmsg->message,
           hwnd, min, max );
     
     HOOK_CallHooksA( WH_GETMESSAGE, HC_ACTION, 0, (LPARAM)lpmsg );
@@ -1322,7 +1322,7 @@
 {
     BOOL bRet = GetMessageA(lpmsg, hwnd, min, max);
     if (bRet)
-        FIXME(sendmsg, "(%s) unicode<->ascii\n", SPY_GetMsgName(lpmsg->message));
+        FIXME_(sendmsg)("(%s) unicode<->ascii\n", SPY_GetMsgName(lpmsg->message));
     return bRet;
 
 }
@@ -1364,19 +1364,19 @@
     if (hwnd == HWND_BROADCAST)
     {
         WND *pDesktop = WIN_GetDesktop();
-        TRACE(msg,"HWND_BROADCAST !\n");
+        TRACE_(msg)("HWND_BROADCAST !\n");
         
         for (wndPtr=WIN_LockWndPtr(pDesktop->child); wndPtr; WIN_UpdateWndPtr(&wndPtr,wndPtr->next))
         {
             if (wndPtr->dwStyle & WS_POPUP || wndPtr->dwStyle & WS_CAPTION)
             {
-                TRACE(msg,"BROADCAST Message to hWnd=%04x m=%04X w=%04X l=%08lX !\n",
+                TRACE_(msg)("BROADCAST Message to hWnd=%04x m=%04X w=%04X l=%08lX !\n",
                             wndPtr->hwndSelf, message, wParam, lParam);
                 PostMessageA( wndPtr->hwndSelf, message, wParam, lParam );
             }
         }
         WIN_ReleaseDesktop();
-        TRACE(msg,"End of HWND_BROADCAST !\n");
+        TRACE_(msg)("End of HWND_BROADCAST !\n");
         return TRUE;
     }
 
@@ -1400,7 +1400,7 @@
 BOOL WINAPI PostMessageW( HWND hwnd, UINT message, WPARAM wParam,
                               LPARAM lParam )
 {
-  FIXME(sendmsg, "(%s) unicode<->ascii\n", SPY_GetMsgName(message));
+  FIXME_(sendmsg)("(%s) unicode<->ascii\n", SPY_GetMsgName(message));
   return PostMessageA( hwnd, message, wParam, lParam );
 }
 
@@ -1474,14 +1474,14 @@
         }
         WIN_ReleaseDesktop();
 
-        TRACE(msg,"HWND_BROADCAST !\n");
+        TRACE_(msg)("HWND_BROADCAST !\n");
         for (ppWnd = list; *ppWnd; ppWnd++)
         {
             WIN_UpdateWndPtr(&wndPtr,*ppWnd);
             if (!IsWindow(wndPtr->hwndSelf)) continue;
             if (wndPtr->dwStyle & WS_POPUP || wndPtr->dwStyle & WS_CAPTION)
             {
-                TRACE(msg,"BROADCAST Message to hWnd=%04x m=%04X w=%04lX l=%08lX !\n",
+                TRACE_(msg)("BROADCAST Message to hWnd=%04x m=%04X w=%04lX l=%08lX !\n",
                             wndPtr->hwndSelf, msg, (DWORD)wParam, lParam);
                 MSG_SendMessage( wndPtr->hwndSelf, msg, wParam, lParam,
                                timeout, flags, pRes);
@@ -1489,7 +1489,7 @@
         }
         WIN_ReleaseWndPtr(wndPtr);
         WIN_ReleaseWinArray(list);
-        TRACE(msg,"End of HWND_BROADCAST !\n");
+        TRACE_(msg)("End of HWND_BROADCAST !\n");
         return 1;
     }
 
@@ -1522,7 +1522,7 @@
 
     if (!(wndPtr = WIN_FindWndPtr( hwnd )))
     {
-        WARN(msg, "invalid hwnd %04x\n", hwnd );
+        WARN_(msg)("invalid hwnd %04x\n", hwnd );
         return 0;
     }
     if (QUEUE_IsExitingQueue(wndPtr->hmemTaskQ))
@@ -1621,7 +1621,7 @@
 BOOL WINAPI PostThreadMessageW(DWORD idThread , UINT message,
                                    WPARAM wParam, LPARAM lParam )
 {
-   FIXME(sendmsg, "(%s) unicode<->ascii\n",SPY_GetMsgName(message));
+   FIXME_(sendmsg)("(%s) unicode<->ascii\n",SPY_GetMsgName(message));
    return PostThreadMessageA(idThread, message, wParam, lParam);
 }
 
@@ -1984,15 +1984,15 @@
     BYTE wp[2];
     
     if (message != WM_MOUSEMOVE && message != WM_TIMER)
-        TRACE(msg, "(%s, %04X, %08lX)\n",
+        TRACE_(msg)("(%s, %04X, %08lX)\n",
 		     SPY_GetMsgName(message), wParam, lParam );
     if(message >= WM_KEYFIRST && message <= WM_KEYLAST)
-        TRACE(key, "(%s, %04X, %08lX)\n",
+        TRACE_(key)("(%s, %04X, %08lX)\n",
 		     SPY_GetMsgName(message), wParam, lParam );
 
     if ((message != WM_KEYDOWN) && (message != WM_SYSKEYDOWN))	return FALSE;
 
-    TRACE(key, "Translating key %04X, scancode %04X\n",
+    TRACE_(key)("Translating key %04X, scancode %04X\n",
                  wParam, HIWORD(lParam) );
 
     /* FIXME : should handle ToAscii yielding 2 */
@@ -2023,14 +2023,14 @@
                 }
             dead_char = 0;
         }
-        TRACE(key, "1 -> PostMessage(%s)\n", SPY_GetMsgName(message));
+        TRACE_(key)("1 -> PostMessage(%s)\n", SPY_GetMsgName(message));
         PostMessage16( hwnd, message, wp[0], lParam );
         return TRUE;
 
     case -1 :
         message = (message == WM_KEYDOWN) ? WM_DEADCHAR : WM_SYSDEADCHAR;
         dead_char = wp[0];
-        TRACE(key, "-1 -> PostMessage(%s)\n",
+        TRACE_(key)("-1 -> PostMessage(%s)\n",
                      SPY_GetMsgName(message));
         PostMessage16( hwnd, message, wp[0], lParam );
         return TRUE;
@@ -2116,7 +2116,7 @@
     if (painting && wndPtr &&
         (wndPtr->flags & WIN_NEEDS_BEGINPAINT) && wndPtr->hrgnUpdate)
     {
-	ERR(msg, "BeginPaint not called on WM_PAINT for hwnd %04x!\n", 
+	ERR_(msg)("BeginPaint not called on WM_PAINT for hwnd %04x!\n", 
 	    msg->hwnd);
 	wndPtr->flags &= ~WIN_NEEDS_BEGINPAINT;
         /* Validate the update region to avoid infinite WM_PAINT loop */
@@ -2194,7 +2194,7 @@
     if (painting && wndPtr &&
         (wndPtr->flags & WIN_NEEDS_BEGINPAINT) && wndPtr->hrgnUpdate)
     {
-	ERR(msg, "BeginPaint not called on WM_PAINT for hwnd %04x!\n", 
+	ERR_(msg)("BeginPaint not called on WM_PAINT for hwnd %04x!\n", 
 	    msg->hwnd);
 	wndPtr->flags &= ~WIN_NEEDS_BEGINPAINT;
         /* Validate the update region to avoid infinite WM_PAINT loop */
@@ -2268,7 +2268,7 @@
     if (painting && wndPtr &&
         (wndPtr->flags & WIN_NEEDS_BEGINPAINT) && wndPtr->hrgnUpdate)
     {
-	ERR(msg, "BeginPaint not called on WM_PAINT for hwnd %04x!\n", 
+	ERR_(msg)("BeginPaint not called on WM_PAINT for hwnd %04x!\n", 
 	    msg->hwnd);
 	wndPtr->flags &= ~WIN_NEEDS_BEGINPAINT;
         /* Validate the update region to avoid infinite WM_PAINT loop */
@@ -2285,7 +2285,7 @@
  */
 WORD WINAPI RegisterWindowMessage16( SEGPTR str )
 {
-    TRACE(msg, "%08lx\n", (DWORD)str );
+    TRACE_(msg)("%08lx\n", (DWORD)str );
     return GlobalAddAtom16( str );
 }
 
@@ -2295,7 +2295,7 @@
  */
 WORD WINAPI RegisterWindowMessageA( LPCSTR str )
 {
-    TRACE(msg, "%s\n", str );
+    TRACE_(msg)("%s\n", str );
     return GlobalAddAtomA( str );
 }
 
@@ -2305,7 +2305,7 @@
  */
 WORD WINAPI RegisterWindowMessageW( LPCWSTR str )
 {
-    TRACE(msg, "%p\n", str );
+    TRACE_(msg)("%p\n", str );
     return GlobalAddAtomW( str );
 }
 
@@ -2371,7 +2371,7 @@
 	DWORD dwFlags,LPDWORD recipients,UINT uMessage,WPARAM wParam,
 	LPARAM lParam
 ) {
-	FIXME(sendmsg,"(%08lx,%08lx,%08x,%08x,%08lx): stub!\n",
+	FIXME_(sendmsg)("(%08lx,%08lx,%08x,%08x,%08lx): stub!\n",
 	      dwFlags,*recipients,uMessage,wParam,lParam
 	);
 	return 0;
@@ -2386,7 +2386,7 @@
  */
 BOOL WINAPI SendNotifyMessageA(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
 {	BOOL ret = TRUE;
-	FIXME(msg,"(%04x,%08x,%08x,%08lx) not complete\n",
+	FIXME_(msg)("(%04x,%08x,%08x,%08lx) not complete\n",
 	      hwnd, msg, wParam, lParam);
 	      
 	if ( GetCurrentThreadId() == GetWindowThreadProcessId ( hwnd, NULL))
@@ -2407,7 +2407,7 @@
  */
 BOOL WINAPI SendNotifyMessageW(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
 {       BOOL ret = TRUE;
-	FIXME(msg,"(%04x,%08x,%08x,%08lx) not complete\n",
+	FIXME_(msg)("(%04x,%08x,%08x,%08lx) not complete\n",
 	      hwnd, msg, wParam, lParam);
 
 	if ( GetCurrentThreadId() == GetWindowThreadProcessId ( hwnd, NULL))
@@ -2429,11 +2429,11 @@
 	HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,
 	FARPROC lpResultCallBack,DWORD dwData)
 {	
-	FIXME(msg,"(0x%04x,0x%04x,0x%08x,0x%08lx,%p,0x%08lx),stub!\n",
+	FIXME_(msg)("(0x%04x,0x%04x,0x%08x,0x%08lx,%p,0x%08lx),stub!\n",
 		hWnd,Msg,wParam,lParam,lpResultCallBack,dwData);
 	if ( hWnd == HWND_BROADCAST)
 	{	PostMessageA( hWnd, Msg, wParam, lParam);
-		FIXME(msg,"Broadcast: Callback will not be called!\n");
+		FIXME_(msg)("Broadcast: Callback will not be called!\n");
 		return TRUE;
 	}
 	(lpResultCallBack)( hWnd, Msg, dwData, SendMessageA ( hWnd, Msg, wParam, lParam ));
@@ -2449,11 +2449,11 @@
 	HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,
 	FARPROC lpResultCallBack,DWORD dwData)
 {	
-	FIXME(msg,"(0x%04x,0x%04x,0x%08x,0x%08lx,%p,0x%08lx),stub!\n",
+	FIXME_(msg)("(0x%04x,0x%04x,0x%08x,0x%08lx,%p,0x%08lx),stub!\n",
 		hWnd,Msg,wParam,lParam,lpResultCallBack,dwData);
 	if ( hWnd == HWND_BROADCAST)
 	{	PostMessageW( hWnd, Msg, wParam, lParam);
-		FIXME(msg,"Broadcast: Callback will not be called!\n");
+		FIXME_(msg)("Broadcast: Callback will not be called!\n");
 		return TRUE;
 	}
 	(lpResultCallBack)( hWnd, Msg, dwData, SendMessageA ( hWnd, Msg, wParam, lParam ));
diff --git a/windows/nonclient.c b/windows/nonclient.c
index fa8a0d7..e0bb652 100644
--- a/windows/nonclient.c
+++ b/windows/nonclient.c
@@ -22,7 +22,7 @@
 #include "queue.h"
 #include "selectors.h"
 #include "tweak.h"
-#include "debug.h"
+#include "debugtools.h"
 #include "options.h"
 #include "shellapi.h"
 #include "cache.h"
@@ -81,7 +81,7 @@
                            DWORD exStyle )
 {
     if (TWEAK_WineLook > WIN31_LOOK)
-	ERR(nonclient, "Called in Win95 mode. Aiee! Please report this.\n" );
+	ERR_(nonclient)("Called in Win95 mode. Aiee! Please report this.\n" );
 
     if(style & WS_ICONIC) return;
     /* Decide if the window will be managed (see CreateWindowEx) */
@@ -311,7 +311,7 @@
 {
     RECT   rc = *rect;
 
-    TRACE (nonclient, "(%08x,%08x,%p,%08x,%08x,\"%s\",%08x)\n",
+    TRACE_(nonclient)("(%08x,%08x,%p,%08x,%08x,\"%s\",%08x)\n",
 	   hwnd, hdc, rect, hFont, hIcon, str, uFlags);
 
     /* drawing background */
@@ -403,7 +403,7 @@
 
     /* drawing focus ??? */
     if (uFlags & 0x2000)
-	FIXME (nonclient, "undocumented flag (0x2000)!\n");
+	FIXME_(nonclient)("undocumented flag (0x2000)!\n");
 
     return 0;
 }
@@ -463,7 +463,7 @@
 		WS_EX_STATICEDGE | WS_EX_TOOLWINDOW);
     if (exStyle & WS_EX_DLGMODALFRAME) style &= ~WS_THICKFRAME;
 
-    TRACE(nonclient, "(%d,%d)-(%d,%d) %08lx %d %08lx\n",
+    TRACE_(nonclient)("(%d,%d)-(%d,%d) %08lx %d %08lx\n",
                       rect->left, rect->top, rect->right, rect->bottom,
                       style, menu, exStyle );
 
@@ -519,7 +519,7 @@
 	winRect->bottom -= tmpRect.bottom;
 
 	if (HAS_MENU(pWnd)) {
-	    TRACE(nonclient, "Calling "
+	    TRACE_(nonclient)("Calling "
 			       "GetMenuBarHeight with HWND 0x%x, width %d, "
 			       "at (%d, %d).\n", pWnd->hwndSelf,
 			       winRect->right - winRect->left,
@@ -636,7 +636,7 @@
 {
     RECT16 rect;
 
-    TRACE(nonclient, "hwnd=%04x pt=%d,%d\n",
+    TRACE_(nonclient)("hwnd=%04x pt=%d,%d\n",
 		      wndPtr->hwndSelf, pt.x, pt.y );
 
     GetWindowRect16 (wndPtr->hwndSelf, &rect );
@@ -772,7 +772,7 @@
 {
     RECT16 rect;
 
-    TRACE(nonclient, "hwnd=%04x pt=%d,%d\n",
+    TRACE_(nonclient)("hwnd=%04x pt=%d,%d\n",
 		      wndPtr->hwndSelf, pt.x, pt.y );
 
     GetWindowRect16 (wndPtr->hwndSelf, &rect );
@@ -1211,7 +1211,7 @@
     INT width, height;
 
     if (TWEAK_WineLook != WIN31_LOOK)
-	ERR (nonclient, "Called in Win95 mode. Aiee! Please report this.\n" );
+	ERR_(nonclient)("Called in Win95 mode. Aiee! Please report this.\n" );
 
     if (dlgFrame)
     {
@@ -1565,7 +1565,7 @@
 
     active  = wndPtr->flags & WIN_NCACTIVATED;
 
-    TRACE(nonclient, "%04x %d\n", hwnd, active );
+    TRACE_(nonclient)("%04x %d\n", hwnd, active );
 
     if (!(hdc = GetDCEx( hwnd, (clip > 1) ? clip : 0, DCX_USESTYLE | DCX_WINDOW |
 			      ((clip > 1) ? (DCX_INTERSECTRGN | DCX_KEEPCLIPRGN): 0) ))) return;
@@ -1679,7 +1679,7 @@
 
     active  = wndPtr->flags & WIN_NCACTIVATED;
 
-    TRACE(nonclient, "%04x %d\n", hwnd, active );
+    TRACE_(nonclient)("%04x %d\n", hwnd, active );
 
     /* MSDN docs are pretty idiotic here, they say app CAN use clipRgn in the call to
      * GetDCEx implying that it is allowed not to use it either. However, the suggested
@@ -1748,14 +1748,14 @@
 	RECT r = rect;
 	r.bottom = rect.top + sysMetrics[SM_CYMENU];
 	
-	TRACE(nonclient, "Calling DrawMenuBar with "
+	TRACE_(nonclient)("Calling DrawMenuBar with "
 			  "rect (%d, %d)-(%d, %d)\n", r.left, r.top,
 			  r.right, r.bottom);
 
 	rect.top += MENU_DrawMenuBar( hdc, &r, hwnd, suppress_menupaint ) + 1;
     }
 
-    TRACE(nonclient, "After MenuBar, rect is (%d, %d)-(%d, %d).\n",
+    TRACE_(nonclient)("After MenuBar, rect is (%d, %d)-(%d, %d).\n",
 		       rect.left, rect.top, rect.right, rect.bottom );
 
     if (wndPtr->dwExStyle & WS_EX_CLIENTEDGE)
@@ -2529,7 +2529,7 @@
     POINT pt32;
     UINT16 uCommand = wParam & 0xFFF0;
 
-    TRACE(nonclient, "Handling WM_SYSCOMMAND %x %d,%d\n", 
+    TRACE_(nonclient)("Handling WM_SYSCOMMAND %x %d,%d\n", 
 		      wParam, pt.x, pt.y );
 
     if (wndPtr->dwStyle & WS_CHILD && uCommand != SC_KEYMENU )
@@ -2582,14 +2582,14 @@
             ShellAboutA(hwnd,"Wine", WINE_RELEASE_INFO, 0);
 	else 
 	  if (wParam == SC_PUTMARK)
-            TRACE(shell,"Mark requested by user\n");
+            TRACE_(shell)("Mark requested by user\n");
 	break;
   
     case SC_HOTKEY:
     case SC_ARRANGE:
     case SC_NEXTWINDOW:
     case SC_PREVWINDOW:
- 	FIXME (nonclient, "unimplemented!\n");
+ 	FIXME_(nonclient)("unimplemented!\n");
         break;
     }
     WIN_ReleaseWndPtr(wndPtr);
diff --git a/windows/painting.c b/windows/painting.c
index e4b389b..f3a3236 100644
--- a/windows/painting.c
+++ b/windows/painting.c
@@ -11,7 +11,7 @@
 #include "queue.h"
 #include "dce.h"
 #include "heap.h"
-#include "debug.h"
+#include "debugtools.h"
 #include "wine/winuser16.h"
 
 DECLARE_DEBUG_CHANNEL(nonclient)
@@ -37,7 +37,7 @@
 {
     HRGN hClip = 0;
 
-    TRACE(nonclient,"hwnd %04x, hrgnUpdate %04x, ncf %i\n", 
+    TRACE_(nonclient)("hwnd %04x, hrgnUpdate %04x, ncf %i\n", 
                       wnd->hwndSelf, wnd->hrgnUpdate, (wnd->flags & WIN_NEEDS_NCPAINT)!=0 );
 
     /* desktop window doesn't have nonclient area */
@@ -62,7 +62,7 @@
 
 	GETCLIENTRECTW( wnd, r );
 
-	TRACE(nonclient, "\tclient box (%i,%i-%i,%i)\n", r.left, r.top, r.right, r.bottom );
+	TRACE_(nonclient)("\tclient box (%i,%i-%i,%i)\n", r.left, r.top, r.right, r.bottom );
 
 	if( wnd->hrgnUpdate > 1 )
 	{
@@ -137,7 +137,7 @@
 
     HideCaret( hwnd );
 
-    TRACE(win,"hrgnUpdate = %04x, \n", hrgnUpdate);
+    TRACE_(win)("hrgnUpdate = %04x, \n", hrgnUpdate);
 
     if (wndPtr->class->style & CS_PARENTDC)
     {
@@ -157,18 +157,18 @@
                              (bIcon ? DCX_WINDOW : 0) );
     }
 
-    TRACE(win,"hdc = %04x\n", lps->hdc);
+    TRACE_(win)("hdc = %04x\n", lps->hdc);
 
     if (!lps->hdc)
     {
-        WARN(win, "GetDCEx() failed in BeginPaint(), hwnd=%04x\n", hwnd);
+        WARN_(win)("GetDCEx() failed in BeginPaint(), hwnd=%04x\n", hwnd);
         WIN_ReleaseWndPtr(wndPtr);
         return 0;
     }
 
     GetClipBox16( lps->hdc, &lps->rcPaint );
 
-    TRACE(win,"box = (%i,%i - %i,%i)\n", lps->rcPaint.left, lps->rcPaint.top,
+    TRACE_(win)("box = (%i,%i - %i,%i)\n", lps->rcPaint.left, lps->rcPaint.top,
 		    lps->rcPaint.right, lps->rcPaint.bottom );
 
     if (wndPtr->flags & WIN_NEEDS_ERASEBKGND)
@@ -332,7 +332,7 @@
     bIcon = (wndPtr->dwStyle & WS_MINIMIZE && wndPtr->class->hIcon);
     if (rectUpdate)
     {
-        TRACE(win, "%04x (%04x) %d,%d-%d,%d %04x flags=%04x, exflags=%04x\n",
+        TRACE_(win)("%04x (%04x) %d,%d-%d,%d %04x flags=%04x, exflags=%04x\n",
                     hwnd, wndPtr->hrgnUpdate, rectUpdate->left, rectUpdate->top,
                     rectUpdate->right, rectUpdate->bottom, hrgnUpdate, flags, ex );
     }
@@ -340,7 +340,7 @@
     {
 	if( hrgnUpdate ) GetRgnBox( hrgnUpdate, &r );
 	else SetRectEmpty( &r );
-        TRACE(win, "%04x (%04x) NULL %04x box (%i,%i-%i,%i) flags=%04x, exflags=%04x\n", 
+        TRACE_(win)("%04x (%04x) NULL %04x box (%i,%i-%i,%i) flags=%04x, exflags=%04x\n", 
 	      hwnd, wndPtr->hrgnUpdate, hrgnUpdate, r.left, r.top, r.right, r.bottom, flags, ex);
     }
 
diff --git a/windows/queue.c b/windows/queue.c
index 595be9c..3418ef3 100644
--- a/windows/queue.c
+++ b/windows/queue.c
@@ -18,7 +18,7 @@
 #include "thread.h"
 #include "process.h"
 #include <assert.h>
-#include "debug.h"
+#include "debugtools.h"
 #include "spy.h"
 
 DECLARE_DEBUG_CHANNEL(msg)
@@ -57,7 +57,7 @@
     
     BOOL16 bIsWin16 = 0;
     
-    TRACE(msg,"()\n");
+    TRACE_(msg)("()\n");
 
     /* Share a single instance of perQData for all 16 bit tasks */
     if ( ( bIsWin16 = THREAD_IsWin16( THREAD_Current() ) ) )
@@ -102,7 +102,7 @@
 ULONG PERQDATA_Addref( PERQUEUEDATA *pQData )
 {
     assert(pQData != 0 );
-    TRACE(msg,"(): current refcount %lu ...\n", pQData->ulRefCount);
+    TRACE_(msg)("(): current refcount %lu ...\n", pQData->ulRefCount);
 
     EnterCriticalSection( &pQData->cSection );
     ++pQData->ulRefCount;
@@ -122,7 +122,7 @@
 ULONG PERQDATA_Release( PERQUEUEDATA *pQData )
 {
     assert(pQData != 0 );
-    TRACE(msg,"(): current refcount %lu ...\n",
+    TRACE_(msg)("(): current refcount %lu ...\n",
           (LONG)pQData->ulRefCount );
 
     EnterCriticalSection( &pQData->cSection );
@@ -131,7 +131,7 @@
         LeaveCriticalSection( &pQData->cSection );
         DeleteCriticalSection( &pQData->cSection );
 
-        TRACE(msg,"(): deleting PERQUEUEDATA instance ...\n" );
+        TRACE_(msg)("(): deleting PERQUEUEDATA instance ...\n" );
 
         /* Deleting our global 16 bit perQData? */
         if ( pQData == pQDataWin16 )
@@ -356,11 +356,11 @@
 
     if (!(pq = (MESSAGEQUEUE*) QUEUE_Lock( hQueue )) )
     {
-        WARN(msg, "%04x is not a queue handle\n", hQueue );
+        WARN_(msg)("%04x is not a queue handle\n", hQueue );
         return;
     }
 
-    DUMP(    "next: %12.4x  Intertask SendMessage:\n"
+    DPRINTF( "next: %12.4x  Intertask SendMessage:\n"
              "thread: %10p  ----------------------\n"
              "firstMsg: %8p   smWaiting:     %10p\n"
              "lastMsg:  %8p   smPending:     %10p\n"
@@ -390,23 +390,23 @@
     char module[10];
     HQUEUE16 hQueue = hFirstQueue;
 
-    DUMP( "Queue Msgs Thread   Task Module\n" );
+    DPRINTF( "Queue Msgs Thread   Task Module\n" );
     while (hQueue)
     {
         MESSAGEQUEUE *queue = (MESSAGEQUEUE *)QUEUE_Lock( hQueue );
         if (!queue)
         {
-            WARN( msg, "Bad queue handle %04x\n", hQueue );
+            WARN_(msg)("Bad queue handle %04x\n", hQueue );
             return;
         }
         if (!GetModuleName16( queue->thdb->process->task, module, sizeof(module )))
             strcpy( module, "???" );
-        DUMP( "%04x %4d %p %04x %s\n", hQueue,queue->msgCount,
-              queue->thdb, queue->thdb->process->task, module );
+        DPRINTF( "%04x %4d %p %04x %s\n", hQueue,queue->msgCount,
+                 queue->thdb, queue->thdb->process->task, module );
         hQueue = queue->next;
         QUEUE_Unlock( queue );
     }
-    DUMP( "\n" );
+    DPRINTF( "\n" );
 }
 
 
@@ -439,7 +439,7 @@
     MESSAGEQUEUE * msgQueue;
     TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() );
 
-    TRACE(msg,"(): Creating message queue...\n");
+    TRACE_(msg)("(): Creating message queue...\n");
 
     if (!(hQueue = GlobalAlloc16( GMEM_FIXED | GMEM_ZEROINIT,
                                   sizeof(MESSAGEQUEUE) )))
@@ -464,7 +464,7 @@
 
         if (msgQueue->hEvent == 0)
         {
-            WARN(msg, "CreateEvent32A is not able to create an event object");
+            WARN_(msg)("CreateEvent32A is not able to create an event object");
             return 0;
         }
         msgQueue->hEvent = ConvertToGlobalHandle( msgQueue->hEvent );
@@ -533,11 +533,11 @@
     MESSAGEQUEUE * msgQueue = (MESSAGEQUEUE*)QUEUE_Lock(hQueue);
     HQUEUE16 *pPrev;
 
-    TRACE(msg,"(): Deleting message queue %04x\n", hQueue);
+    TRACE_(msg)("(): Deleting message queue %04x\n", hQueue);
 
     if (!hQueue || !msgQueue)
     {
-	WARN(msg, "invalid argument.\n");
+	WARN_(msg)("invalid argument.\n");
 	return 0;
     }
 
@@ -568,7 +568,7 @@
         if ( !msgQ || (msgQ->magic != QUEUE_MAGIC) )
         {
             /* HQUEUE link list is corrupted, try to exit gracefully */
-            WARN( msg, "HQUEUE link list corrupted!\n");
+            WARN_(msg)("HQUEUE link list corrupted!\n");
             pPrev = 0;
             break;
         }
@@ -620,7 +620,7 @@
  */
 void QUEUE_SetWakeBit( MESSAGEQUEUE *queue, WORD bit )
 {
-    TRACE(msg,"queue = %04x (wm=%04x), bit = %04x\n", 
+    TRACE_(msg)("queue = %04x (wm=%04x), bit = %04x\n", 
 	                queue->self, queue->wakeMask, bit );
 
     if (bit & QS_MOUSE) pMouseQueue = queue;
@@ -666,7 +666,7 @@
     MESSAGEQUEUE *queue;
     DWORD curTime = 0;
 
-    TRACE(msg,"q %04x waiting for %04x\n", GetFastQueue16(), bits);
+    TRACE_(msg)("q %04x waiting for %04x\n", GetFastQueue16(), bits);
 
     if ( THREAD_IsWin16( THREAD_Current() ) && (timeout != INFINITE) )
         curTime = GetTickCount();
@@ -697,7 +697,7 @@
             continue;
         }
 	
-	TRACE(msg,"%04x) wakeMask is %04x, waiting\n", queue->self, queue->wakeMask);
+	TRACE_(msg)("%04x) wakeMask is %04x, waiting\n", queue->self, queue->wakeMask);
 
         if ( !THREAD_IsWin16( THREAD_Current() ) )
         {
@@ -732,7 +732,7 @@
  */
 BOOL QUEUE_AddSMSG( MESSAGEQUEUE *queue, int list, SMSG *smsg )
 {
-    TRACE(sendmsg,"queue=%x, list=%d, smsg=%p msg=%s\n", queue->self, list,
+    TRACE_(sendmsg)("queue=%x, list=%d, smsg=%p msg=%s\n", queue->self, list,
           smsg, SPY_GetMsgName(smsg->msg));
     
     switch (list)
@@ -770,7 +770,7 @@
         }
 
         default:
-            WARN(sendmsg, "Invalid list: %d", list);
+            WARN_(sendmsg)("Invalid list: %d", list);
             break;
     }
 
@@ -798,13 +798,13 @@
             if (!smsg)
                 smsg = queue->smProcessing;
 
-            TRACE(sendmsg,"queue=%x, list=%d, smsg=%p msg=%s\n", queue->self, list,
+            TRACE_(sendmsg)("queue=%x, list=%d, smsg=%p msg=%s\n", queue->self, list,
                   smsg, SPY_GetMsgName(smsg->msg));
             /* In fact SM_PROCESSING_LIST is a stack, and smsg
              should be always at the top of the list */
             if ( (smsg != queue->smProcessing) || !queue->smProcessing )
         {
-                ERR( sendmsg, "smsg not at the top of Processing list, smsg=0x%p queue=0x%p", smsg, queue);
+                ERR_(sendmsg)("smsg not at the top of Processing list, smsg=0x%p queue=0x%p", smsg, queue);
                 return 0;
             }
             else
@@ -822,13 +822,13 @@
             if (!smsg)
                 smsg = queue->smWaiting;
             
-            TRACE(sendmsg,"queue=%x, list=%d, smsg=%p msg=%s\n", queue->self, list,
+            TRACE_(sendmsg)("queue=%x, list=%d, smsg=%p msg=%s\n", queue->self, list,
                   smsg, SPY_GetMsgName(smsg->msg));
             /* In fact SM_WAITING_LIST is a stack, and smsg
              should be always at the top of the list */
             if ( (smsg != queue->smWaiting) || !queue->smWaiting )
             {
-                ERR( sendmsg, "smsg not at the top of Waiting list, smsg=0x%p queue=0x%p", smsg, queue);
+                ERR_(sendmsg)("smsg not at the top of Waiting list, smsg=0x%p queue=0x%p", smsg, queue);
                 return 0;
             }
             else
@@ -847,12 +847,12 @@
                 smsg = queue->smPending;
             else
             {
-                ERR( sendmsg, "should always remove the top one in Pending list, smsg=0x%p queue=0x%p", smsg, queue);
+                ERR_(sendmsg)("should always remove the top one in Pending list, smsg=0x%p queue=0x%p", smsg, queue);
 				LeaveCriticalSection( &queue->cSection );
                 return 0;
             }
             
-            TRACE(sendmsg,"queue=%x, list=%d, smsg=%p msg=%s\n", queue->self, list,
+            TRACE_(sendmsg)("queue=%x, list=%d, smsg=%p msg=%s\n", queue->self, list,
                   smsg, SPY_GetMsgName(smsg->msg));
 
             queue->smPending = smsg->nextPending;
@@ -866,7 +866,7 @@
             return smsg;
 
         default:
-            WARN(sendmsg, "Invalid list: %d", list);
+            WARN_(sendmsg)("Invalid list: %d", list);
             break;
     }
 
@@ -885,11 +885,11 @@
     SMSG          *smsg;
     MESSAGEQUEUE  *senderQ;
 
-    TRACE(sendmsg, "queue %04x\n", queue->self );
+    TRACE_(sendmsg)("queue %04x\n", queue->self );
 
     if ( !(queue->wakeBits & QS_SENDMESSAGE) && queue->smPending )
     {
-        TRACE(sendmsg,"\trcm: nothing to do\n");
+        TRACE_(sendmsg)("\trcm: nothing to do\n");
         return;
     }
 
@@ -897,7 +897,7 @@
     smsg = QUEUE_RemoveSMSG(queue, SM_PENDING_LIST, 0);
     QUEUE_AddSMSG(queue, SM_WAITING_LIST, smsg);
 
-    TRACE(sendmsg,"RM: %s [%04x] (%04x -> %04x)\n",
+    TRACE_(sendmsg)("RM: %s [%04x] (%04x -> %04x)\n",
        	    SPY_GetMsgName(smsg->msg), smsg->msg, smsg->hSrcQueue, smsg->hDstQueue );
 
     if (IsWindow( smsg->hWnd ))
@@ -916,7 +916,7 @@
         /* call the right version of CallWindowProcXX */
         if (smsg->flags & SMSG_WIN32)
         {
-            TRACE(sendmsg, "\trcm: msg is Win32\n" );
+            TRACE_(sendmsg)("\trcm: msg is Win32\n" );
             if (smsg->flags & SMSG_UNICODE)
                 result = CallWindowProcW( wndPtr->winproc,
                                             smsg->hWnd, smsg->msg,
@@ -935,9 +935,9 @@
 
         queue->GetMessageExtraInfoVal = extraInfo;  /* Restore extra info */
         WIN_ReleaseWndPtr(wndPtr);
-	TRACE(sendmsg,"result =  %08x\n", (unsigned)result );
+	TRACE_(sendmsg)("result =  %08x\n", (unsigned)result );
     }
-    else WARN(sendmsg, "\trcm: bad hWnd\n");
+    else WARN_(sendmsg)("\trcm: bad hWnd\n");
 
     
         /* set SMSG_SENDING_REPLY flag to tell ReplyMessage16, it's not
@@ -945,7 +945,7 @@
         smsg->flags |= SMSG_SENDING_REPLY;
         ReplyMessage( result );
 
-    TRACE( sendmsg,"done! \n" );
+    TRACE_(sendmsg)("done! \n" );
 }
 
 
@@ -1129,7 +1129,7 @@
       }
       if( !queue )
       { 
-        WARN(msg, "couldn't find queue\n"); 
+        WARN_(msg)("couldn't find queue\n"); 
         return; 
       }
     }
@@ -1404,7 +1404,7 @@
         /* Create thread message queue */
         if( !(hQueue = QUEUE_CreateMsgQueue( TRUE )))
         {
-            WARN(msg, "failed!\n");
+            WARN_(msg)("failed!\n");
             return FALSE;
     }
         
@@ -1472,7 +1472,7 @@
  */
 DWORD WINAPI WaitForInputIdle (HANDLE hProcess, DWORD dwTimeOut)
 {
-  FIXME (msg, "(hProcess=%d, dwTimeOut=%ld): stub\n", hProcess, dwTimeOut);
+  FIXME_(msg)("(hProcess=%d, dwTimeOut=%ld): stub\n", hProcess, dwTimeOut);
 
   return WAIT_TIMEOUT;
 }
diff --git a/windows/user.c b/windows/user.c
index 96781f1..abc7fd5 100644
--- a/windows/user.c
+++ b/windows/user.c
@@ -28,7 +28,7 @@
 #include "class.h"
 #include "desktop.h"
 #include "process.h"
-#include "debug.h"
+#include "debugtools.h"
 
 DECLARE_DEBUG_CHANNEL(hook)
 DECLARE_DEBUG_CHANNEL(local)
@@ -206,7 +206,7 @@
                              UINT16 uExitFn, HINSTANCE16 hInstance,
                              HQUEUE16 hQueue )
 {
-    FIXME( win, "Win 3.1 USER signal %04x\n", uCode );
+    FIXME_(win)("Win 3.1 USER signal %04x\n", uCode );
 }
 
 /***********************************************************************
@@ -260,7 +260,7 @@
         break;
 
     default:
-        FIXME( win, "(%04x, %08lx, %04lx, %04x)\n",
+        FIXME_(win)("(%04x, %08lx, %04lx, %04x)\n",
                     uCode, dwThreadOrProcessID, dwFlags, hModule );
         break;
     }
@@ -286,7 +286,7 @@
  */
 BOOL16 WINAPI ExitWindowsExec16( LPCSTR lpszExe, LPCSTR lpszParams )
 {
-    TRACE(system, "Should run the following in DOS-mode: \"%s %s\"\n",
+    TRACE_(system)("Should run the following in DOS-mode: \"%s %s\"\n",
 	lpszExe, lpszParams);
     return ExitWindowsEx( EWX_LOGOFF, 0xffffffff );
 }
@@ -340,9 +340,9 @@
  */
 LONG WINAPI ChangeDisplaySettingsA( LPDEVMODEA devmode, DWORD flags )
 {
-  FIXME(system, ": stub\n");
+  FIXME_(system)(": stub\n");
   if (devmode==NULL)
-    FIXME(system,"   devmode=NULL (return to default mode)\n");
+    FIXME_(system)("   devmode=NULL (return to default mode)\n");
   else if ( (devmode->dmBitsPerPel != DESKTOP_GetScreenDepth()) 
 	    || (devmode->dmPelsHeight != DESKTOP_GetScreenHeight())
 	    || (devmode->dmPelsWidth != DESKTOP_GetScreenWidth()) )
@@ -350,12 +350,12 @@
   {
 
     if (devmode->dmFields & DM_BITSPERPEL)
-      FIXME(system,"   bpp=%ld\n",devmode->dmBitsPerPel);
+      FIXME_(system)("   bpp=%ld\n",devmode->dmBitsPerPel);
     if (devmode->dmFields & DM_PELSWIDTH)
-      FIXME(system,"   width=%ld\n",devmode->dmPelsWidth);
+      FIXME_(system)("   width=%ld\n",devmode->dmPelsWidth);
     if (devmode->dmFields & DM_PELSHEIGHT)
-      FIXME(system,"   height=%ld\n",devmode->dmPelsHeight);
-    FIXME(system," (Putting X in this mode beforehand might help)\n"); 
+      FIXME_(system)("   height=%ld\n",devmode->dmPelsHeight);
+    FIXME_(system)(" (Putting X in this mode beforehand might help)\n"); 
     /* we don't, but the program ... does not need to know */
     return DISP_CHANGE_SUCCESSFUL; 
   }
@@ -382,7 +382,7 @@
 	} modes[NRMODES]={{512,384},{640,400},{640,480},{800,600},{1024,768}};
 	int depths[4] = {8,16,24,32};
 
-	TRACE(system,"(%s,%ld,%p)\n",name,n,devmode);
+	TRACE_(system)("(%s,%ld,%p)\n",name,n,devmode);
 	if (n==0) {
 		devmode->dmBitsPerPel = DESKTOP_GetScreenDepth();
 		devmode->dmPelsHeight = DESKTOP_GetScreenHeight();
@@ -423,7 +423,7 @@
  */
 FARPROC16 WINAPI SetEventHook16(FARPROC16 lpfnEventHook)
 {
-	FIXME(hook, "(lpfnEventHook=%08x): stub\n", (UINT)lpfnEventHook);
+	FIXME_(hook)("(lpfnEventHook=%08x): stub\n", (UINT)lpfnEventHook);
 	return NULL;
 }
 
@@ -443,10 +443,10 @@
     case USUD_LOCALHEAP:
         return USER_HeapSel;
     case USUD_FIRSTCLASS:
-        FIXME(local, "return a pointer to the first window class.\n"); 
+        FIXME_(local)("return a pointer to the first window class.\n"); 
         return (DWORD)-1;
     default:
-        WARN(local, "wReqType %04x (unknown)", wReqType);
+        WARN_(local)("wReqType %04x (unknown)", wReqType);
         return (DWORD)-1;
     }
 }
@@ -455,7 +455,7 @@
  *           RegisterLogonProcess   (USER32.434)
  */
 DWORD WINAPI RegisterLogonProcess(HANDLE hprocess,BOOL x) {
-	FIXME(win32,"(%d,%d),stub!\n",hprocess,x);
+	FIXME_(win32)("(%d,%d),stub!\n",hprocess,x);
 	return 1;
 }
 
@@ -466,7 +466,7 @@
 	LPWSTR winstation,DWORD res1,DWORD desiredaccess,
 	LPSECURITY_ATTRIBUTES lpsa
 ) {
-	FIXME(win32,"(%s,0x%08lx,0x%08lx,%p),stub!\n",debugstr_w(winstation),
+	FIXME_(win32)("(%s,0x%08lx,0x%08lx,%p),stub!\n",debugstr_w(winstation),
 		res1,desiredaccess,lpsa
 	);
 	return 0xdeadcafe;
@@ -476,7 +476,7 @@
  *           SetProcessWindowStation   (USER32.496)
  */
 BOOL WINAPI SetProcessWindowStation(HWINSTA hWinSta) {
-	FIXME(win32,"(%d),stub!\n",hWinSta);
+	FIXME_(win32)("(%d),stub!\n",hWinSta);
 	return TRUE;
 }
 
@@ -488,7 +488,7 @@
 	/*LPSECURITY_INFORMATION*/LPVOID pSIRequested,
 	PSECURITY_DESCRIPTOR pSID
 ) {
-	FIXME(win32,"(0x%08x,%p,%p),stub!\n",hObj,pSIRequested,pSID);
+	FIXME_(win32)("(0x%08x,%p,%p),stub!\n",hObj,pSIRequested,pSID);
 	return TRUE;
 }
 
@@ -499,7 +499,7 @@
 	LPWSTR lpszDesktop,LPWSTR lpszDevice,LPDEVMODEW pDevmode,
 	DWORD dwFlags,DWORD dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa
 ) {
-	FIXME(win32,"(%s,%s,%p,0x%08lx,0x%08lx,%p),stub!\n",
+	FIXME_(win32)("(%s,%s,%p,0x%08lx,0x%08lx,%p),stub!\n",
 		debugstr_w(lpszDesktop),debugstr_w(lpszDevice),pDevmode,
 		dwFlags,dwDesiredAccess,lpsa
 	);
@@ -508,12 +508,12 @@
 
 BOOL WINAPI CloseWindowStation(HWINSTA hWinSta)
 {
-    FIXME(win32, "(0x%08x)\n", hWinSta);
+    FIXME_(win32)("(0x%08x)\n", hWinSta);
     return TRUE;
 }
 BOOL WINAPI CloseDesktop(HDESK hDesk)
 {
-    FIXME(win32, "(0x%08x)\n", hDesk);
+    FIXME_(win32)("(0x%08x)\n", hDesk);
     return TRUE;
 }
 
@@ -521,7 +521,7 @@
  *           SetWindowStationUser   (USER32.521)
  */
 DWORD WINAPI SetWindowStationUser(DWORD x1,DWORD x2) {
-	FIXME(win32,"(0x%08lx,0x%08lx),stub!\n",x1,x2);
+	FIXME_(win32)("(0x%08lx,0x%08lx),stub!\n",x1,x2);
 	return 1;
 }
 
@@ -529,7 +529,7 @@
  *           SetLogonNotifyWindow   (USER32.486)
  */
 DWORD WINAPI SetLogonNotifyWindow(HWINSTA hwinsta,HWND hwnd) {
-	FIXME(win32,"(0x%x,%04x),stub!\n",hwinsta,hwnd);
+	FIXME_(win32)("(0x%x,%04x),stub!\n",hwinsta,hwnd);
 	return 1;
 }
 
@@ -544,14 +544,14 @@
  *           GetUserObjectInformation32A   (USER32.299)
  */
 BOOL WINAPI GetUserObjectInformationA( HANDLE hObj, int nIndex, LPVOID pvInfo, DWORD nLength, LPDWORD lpnLen )
-{	FIXME(win32,"(0x%x %i %p %ld %p),stub!\n", hObj, nIndex, pvInfo, nLength, lpnLen );
+{	FIXME_(win32)("(0x%x %i %p %ld %p),stub!\n", hObj, nIndex, pvInfo, nLength, lpnLen );
 	return TRUE;
 }
 /***********************************************************************
  *           GetUserObjectInformation32W   (USER32.300)
  */
 BOOL WINAPI GetUserObjectInformationW( HANDLE hObj, int nIndex, LPVOID pvInfo, DWORD nLength, LPDWORD lpnLen )
-{	FIXME(win32,"(0x%x %i %p %ld %p),stub!\n", hObj, nIndex, pvInfo, nLength, lpnLen );
+{	FIXME_(win32)("(0x%x %i %p %ld %p),stub!\n", hObj, nIndex, pvInfo, nLength, lpnLen );
 	return TRUE;
 }
 /***********************************************************************
@@ -559,7 +559,7 @@
  */
 BOOL WINAPI GetUserObjectSecurity(HANDLE hObj, SECURITY_INFORMATION * pSIRequested,
 	PSECURITY_DESCRIPTOR pSID, DWORD nLength, LPDWORD lpnLengthNeeded)
-{	FIXME(win32,"(0x%x %p %p len=%ld %p),stub!\n",  hObj, pSIRequested, pSID, nLength, lpnLengthNeeded);
+{	FIXME_(win32)("(0x%x %p %p len=%ld %p),stub!\n",  hObj, pSIRequested, pSID, nLength, lpnLengthNeeded);
 	return TRUE;
 }
 
@@ -567,7 +567,7 @@
  *           SetSystemCursor   (USER32.507)
  */
 BOOL WINAPI SetSystemCursor(HCURSOR hcur, DWORD id)
-{	FIXME(win32,"(%08x,%08lx),stub!\n",  hcur, id);
+{	FIXME_(win32)("(%08x,%08lx),stub!\n",  hcur, id);
 	return TRUE;
 }
 
@@ -576,5 +576,5 @@
  */
 void WINAPI RegisterSystemThread(DWORD flags, DWORD reserved)
 {
-	FIXME(win32, "(%08lx, %08lx)\n", flags, reserved);
+	FIXME_(win32)("(%08lx, %08lx)\n", flags, reserved);
 }
diff --git a/windows/win.c b/windows/win.c
index 7989457..c81a247 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -28,7 +28,7 @@
 #include "task.h"
 #include "thread.h"
 #include "process.h"
-#include "debug.h"
+#include "debugtools.h"
 #include "winerror.h"
 #include "mdi.h"
 #include "local.h"
@@ -137,7 +137,7 @@
     if (ptr->dwMagic != WND_MAGIC) goto error;
     if (ptr->hwndSelf != hwnd)
     {
-        ERR( win, "Can't happen: hwnd %04x self pointer is %04x\n",hwnd, ptr->hwndSelf );
+        ERR_(win)("Can't happen: hwnd %04x self pointer is %04x\n",hwnd, ptr->hwndSelf );
         goto error;
     }
     /* returns a locked pointer */
@@ -195,7 +195,7 @@
      else if(wndPtr->irefCount < 0)
      {
          /* This else if is useful to monitor the WIN_ReleaseWndPtr function */
-         TRACE(win,"forgot a Lock on %p somewhere\n",wndPtr);
+         TRACE_(win)("forgot a Lock on %p somewhere\n",wndPtr);
      }
      /*unlock all WND structures for thread safeness*/
      WIN_UnlockWnds();
@@ -229,15 +229,15 @@
 
     if (!(ptr = WIN_FindWndPtr( hwnd )))
     {
-        WARN( win, "%04x is not a window handle\n", hwnd );
+        WARN_(win)("%04x is not a window handle\n", hwnd );
         return;
     }
 
     if (!GetClassNameA( hwnd, className, sizeof(className ) ))
         strcpy( className, "#NULL#" );
 
-    TRACE( win, "Window %04x (%p):\n", hwnd, ptr );
-    DUMP(    "next=%p  child=%p  parent=%p  owner=%p  class=%p '%s'\n"
+    TRACE_(win)("Window %04x (%p):\n", hwnd, ptr );
+    DPRINTF( "next=%p  child=%p  parent=%p  owner=%p  class=%p '%s'\n"
              "inst=%04x  taskQ=%04x  updRgn=%04x  active=%04x dce=%p  idmenu=%08x\n"
              "style=%08lx  exstyle=%08lx  wndproc=%08x  text='%s'\n"
              "client=%d,%d-%d,%d  window=%d,%d-%d,%d"
@@ -254,12 +254,12 @@
 
     if (ptr->class->cbWndExtra)
     {
-        DUMP( "extra bytes:" );
+        DPRINTF( "extra bytes:" );
         for (i = 0; i < ptr->class->cbWndExtra; i++)
-            DUMP( " %02x", *((BYTE*)ptr->wExtra+i) );
-        DUMP( "\n" );
+            DPRINTF( " %02x", *((BYTE*)ptr->wExtra+i) );
+        DPRINTF( "\n" );
     }
-    DUMP( "\n" );
+    DPRINTF( "\n" );
     WIN_ReleaseWndPtr(ptr);
 }
 
@@ -278,22 +278,22 @@
 
     if (!ptr)
     {
-        WARN( win, "Invalid window handle %04x\n", hwnd );
+        WARN_(win)("Invalid window handle %04x\n", hwnd );
         return;
     }
 
     if (!indent)  /* first time around */
-       DUMP( "%-16.16s %-8.8s %-6.6s %-17.17s %-8.8s %s\n",
+       DPRINTF( "%-16.16s %-8.8s %-6.6s %-17.17s %-8.8s %s\n",
                  "hwnd", " wndPtr", "queue", "Class Name", " Style", " WndProc"
                  " Text");
 
     while (ptr)
     {
-        DUMP( "%*s%04x%*s", indent, "", ptr->hwndSelf, 13-indent,"");
+        DPRINTF( "%*s%04x%*s", indent, "", ptr->hwndSelf, 13-indent,"");
 
         GlobalGetAtomName16(ptr->class->atomName,className,sizeof(className));
         
-        DUMP( "%08lx %-6.4x %-17.17s %08x %08x %.14s\n",
+        DPRINTF( "%08lx %-6.4x %-17.17s %08x %08x %.14s\n",
                  (DWORD)ptr, ptr->hmemTaskQ, className,
                  (UINT)ptr->dwStyle, (UINT)ptr->winproc,
                  ptr->text?ptr->text:"<null>");
@@ -396,7 +396,7 @@
     {
         if (!(pWnd->dwStyle & WS_VISIBLE))
         {
-            TRACE(win, "skipping window %04x\n",
+            TRACE_(win)("skipping window %04x\n",
                          pWnd->hwndSelf );
         }
         else if ((pWnd->hmemTaskQ == hQueue) &&
@@ -430,7 +430,7 @@
         hwndRet = pWnd->hwndSelf;
     WIN_ReleaseWndPtr(pWnd);
     }
-    TRACE(win,"found %04x\n",hwndRet);
+    TRACE_(win)("found %04x\n",hwndRet);
     return hwndRet;
 }
 
@@ -446,7 +446,7 @@
     HWND hwnd = wndPtr->hwndSelf;
     WND *pWnd;
 
-    TRACE(win, "%04x\n", wndPtr->hwndSelf );
+    TRACE_(win)("%04x\n", wndPtr->hwndSelf );
 
 #ifdef CONFIG_IPC
     if (main_block)
@@ -602,7 +602,7 @@
     HWND hwndDesktop;
     DESKTOP *pDesktop;
 
-    TRACE(win,"Creating desktop window\n");
+    TRACE_(win)("Creating desktop window\n");
 
     
     /* Initialisation of the critical section for thread safeness */
@@ -683,7 +683,7 @@
     LRESULT (CALLBACK *localSend32)(HWND, UINT, WPARAM, LPARAM);
     char buffer[256];
 
-    TRACE(win, "%s %s %08lx %08lx %d,%d %dx%d %04x %04x %08x %p\n",
+    TRACE_(win)("%s %s %08lx %08lx %d,%d %dx%d %04x %04x %08x %p\n",
           unicode ? debugres_w((LPWSTR)cs->lpszName) : debugres_a(cs->lpszName), 
           unicode ? debugres_w((LPWSTR)cs->lpszClass) : debugres_a(cs->lpszClass),
           cs->dwExStyle, cs->style, cs->x, cs->y, cs->cx, cs->cy,
@@ -696,11 +696,11 @@
 	/* Make sure parent is valid */
         if (!IsWindow( cs->hwndParent ))
         {
-            WARN( win, "Bad parent %04x\n", cs->hwndParent );
+            WARN_(win)("Bad parent %04x\n", cs->hwndParent );
 	    return 0;
 	}
     } else if ((cs->style & WS_CHILD) && !(cs->style & WS_POPUP)) {
-        WARN( win, "No parent for child window\n" );
+        WARN_(win)("No parent for child window\n" );
         return 0;  /* WS_CHILD needs a parent, but WS_POPUP doesn't */
     }
 
@@ -708,7 +708,7 @@
     if (!(classPtr = CLASS_FindClassByAtom( classAtom, win32?cs->hInstance:GetExePtr(cs->hInstance) )))
     {
         GlobalGetAtomNameA( classAtom, buffer, sizeof(buffer) );
-        WARN( win, "Bad class '%s'\n", buffer );
+        WARN_(win)("Bad class '%s'\n", buffer );
         return 0;
     }
 
@@ -763,7 +763,7 @@
     if (!(hwnd = USER_HEAP_ALLOC( sizeof(*wndPtr) + classPtr->cbWndExtra
                                   - sizeof(wndPtr->wExtra) )))
     {
-	TRACE(win, "out of memory\n" );
+	TRACE_(win)("out of memory\n" );
 	return 0;
     }
 
@@ -836,7 +836,7 @@
                       : HOOK_CallHooksA(WH_CBT, HCBT_CREATEWND, hwnd, (LPARAM)&cbtc);
         if (ret)
 	{
-	    TRACE(win, "CBT-hook returned 0\n");
+	    TRACE_(win)("CBT-hook returned 0\n");
 	    wndPtr->pDriver->pFinalize(wndPtr);
 	    USER_HEAP_FREE( hwnd );
             retvalue =  0;
@@ -956,7 +956,7 @@
                 /* send it anyway */
 	        if (((wndPtr->rectClient.right-wndPtr->rectClient.left) <0)
 		    ||((wndPtr->rectClient.bottom-wndPtr->rectClient.top)<0))
-		  WARN(win,"sending bogus WM_SIZE message 0x%08lx\n",
+		  WARN_(win)("sending bogus WM_SIZE message 0x%08lx\n",
 			MAKELONG(wndPtr->rectClient.right-wndPtr->rectClient.left,
 				 wndPtr->rectClient.bottom-wndPtr->rectClient.top));
                 SendMessageA( hwnd, WM_SIZE, SIZE_RESTORED,
@@ -1002,7 +1002,7 @@
             if (!(wndPtr->dwStyle & WS_CHILD) && !wndPtr->owner)
                 HOOK_CallHooks16( WH_SHELL, HSHELL_WINDOWCREATED, hwnd, 0 );
 
-            TRACE(win, "created window %04x\n", hwnd);
+            TRACE_(win)("created window %04x\n", hwnd);
             retvalue = hwnd;
             goto end;
         }
@@ -1011,7 +1011,7 @@
 
     /* Abort window creation */
 
-    WARN(win, "aborted by WM_xxCREATE!\n");
+    WARN_(win)("aborted by WM_xxCREATE!\n");
     WIN_ReleaseWndPtr(WIN_DestroyWindow( wndPtr ));
     retvalue = 0;
 end:
@@ -1141,11 +1141,11 @@
     	if (HIWORD(className))
         {
             LPSTR cn = HEAP_strdupWtoA( GetProcessHeap(), 0, className );
-            WARN( win, "Bad class name '%s'\n",cn);
+            WARN_(win)("Bad class name '%s'\n",cn);
             HeapFree( GetProcessHeap(), 0, cn );
 	}
         else
-            WARN( win, "Bad class name %p\n", className );
+            WARN_(win)("Bad class name %p\n", className );
         return 0;
     }
 
@@ -1268,7 +1268,7 @@
       WIN_CheckFocus(pWnd);	
     }
     else
-      WARN(win, "\tdestroyed itself while in WM_DESTROY!\n");
+      WARN_(win)("\tdestroyed itself while in WM_DESTROY!\n");
 }
 
 
@@ -1289,7 +1289,7 @@
     WND * wndPtr;
     BOOL retvalue;
 
-    TRACE(win, "(%04x)\n", hwnd);
+    TRACE_(win)("(%04x)\n", hwnd);
     
       /* Initialization */
 
@@ -1561,7 +1561,7 @@
 {
     ATOM atom = 0;
 
-    TRACE(win, "%04x %04x '%s' '%s'\n", parent,
+    TRACE_(win)("%04x %04x '%s' '%s'\n", parent,
 		child, HIWORD(className)?(char *)PTR_SEG_TO_LIN(className):"",
 		title ? title : "");
 
@@ -1709,7 +1709,7 @@
     WND *wndPtr;
     BOOL retvalue;
 
-    TRACE(win,"EnableWindow32: ( %x, %d )\n", hwnd, enable);
+    TRACE_(win)("EnableWindow32: ( %x, %d )\n", hwnd, enable);
    
     if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return FALSE;
     if (enable && (wndPtr->dwStyle & WS_DISABLED))
@@ -1814,7 +1814,7 @@
     {
         if (offset + sizeof(WORD) > wndPtr->class->cbWndExtra)
         {
-            WARN( win, "Invalid offset %d\n", offset );
+            WARN_(win)("Invalid offset %d\n", offset );
             retvalue = 0;
             goto end;
         }
@@ -1825,7 +1825,7 @@
     {
     case GWW_ID:         
     	if (HIWORD(wndPtr->wIDmenu))
-    		WARN( win,"GWW_ID: discards high bits of 0x%08x!\n",
+    		WARN_(win)("GWW_ID: discards high bits of 0x%08x!\n",
                     wndPtr->wIDmenu);
         retvalue = (WORD)wndPtr->wIDmenu;
         goto end;
@@ -1834,12 +1834,12 @@
         goto end;
     case GWW_HINSTANCE:  
     	if (HIWORD(wndPtr->hInstance))
-    		WARN(win,"GWW_HINSTANCE: discards high bits of 0x%08x!\n",
+    		WARN_(win)("GWW_HINSTANCE: discards high bits of 0x%08x!\n",
                     wndPtr->hInstance);
         retvalue = (WORD)wndPtr->hInstance;
         goto end;
     default:
-        WARN( win, "Invalid offset %d\n", offset );
+        WARN_(win)("Invalid offset %d\n", offset );
         retvalue = 0;
         goto end;
     }
@@ -1884,7 +1884,7 @@
     {
         if (offset + sizeof(WORD) > wndPtr->class->cbWndExtra)
         {
-            WARN( win, "Invalid offset %d\n", offset );
+            WARN_(win)("Invalid offset %d\n", offset );
             retval = 0;
             goto end;
         }
@@ -1897,7 +1897,7 @@
         case GWW_HWNDPARENT: retval = SetParent( hwnd, newval );
                              goto end;
 	default:
-            WARN( win, "Invalid offset %d\n", offset );
+            WARN_(win)("Invalid offset %d\n", offset );
             retval = 0;
             goto end;
     }
@@ -1923,7 +1923,7 @@
     {
         if (offset + sizeof(LONG) > wndPtr->class->cbWndExtra)
         {
-            WARN( win, "Invalid offset %d\n", offset );
+            WARN_(win)("Invalid offset %d\n", offset );
             retvalue = 0;
             goto end;
         }
@@ -1954,7 +1954,7 @@
         case GWL_HINSTANCE:  retvalue = wndPtr->hInstance;
                              goto end;
         default:
-            WARN( win, "Unknown offset %d\n", offset );
+            WARN_(win)("Unknown offset %d\n", offset );
     }
     retvalue = 0;
 end:
@@ -1981,7 +1981,7 @@
     WND * wndPtr = WIN_FindWndPtr( hwnd );
     STYLESTRUCT style;
     
-    TRACE(win,"%x=%p %x %lx %x\n",hwnd, wndPtr, offset, newval, type);
+    TRACE_(win)("%x=%p %x %lx %x\n",hwnd, wndPtr, offset, newval, type);
 
     if (!wndPtr)
     {
@@ -1994,7 +1994,7 @@
     {
         if (offset + sizeof(LONG) > wndPtr->class->cbWndExtra)
         {
-            WARN( win, "Invalid offset %d\n", offset );
+            WARN_(win)("Invalid offset %d\n", offset );
 
             /* Is this the right error? */
             SetLastError( ERROR_OUTOFMEMORY );
@@ -2053,7 +2053,7 @@
                 goto end;
 
 	default:
-            WARN( win, "Invalid offset %d\n", offset );
+            WARN_(win)("Invalid offset %d\n", offset );
 
             /* Don't think this is right error but it should do */
             SetLastError( ERROR_OUTOFMEMORY );
@@ -2221,7 +2221,7 @@
  */
 INT WINAPI InternalGetWindowText(HWND hwnd,LPWSTR lpString,INT nMaxCount )
 {
-    FIXME(win,"(0x%08x,%p,0x%x),stub!\n",hwnd,lpString,nMaxCount);
+    FIXME_(win)("(0x%08x,%p,0x%x),stub!\n",hwnd,lpString,nMaxCount);
     return GetWindowTextW(hwnd,lpString,nMaxCount);
 }
 
@@ -2981,7 +2981,7 @@
 {
     WND *wndPtr = WIN_FindWndPtr(hWnd);
 
-    TRACE(win,"%04x\n", hWnd);
+    TRACE_(win)("%04x\n", hWnd);
 
     if (!wndPtr) return FALSE;
 
@@ -3026,7 +3026,7 @@
 {
     HWND hWndOldModal = hwndSysModal;
     hwndSysModal = hWnd;
-    FIXME(win, "EMPTY STUB !! SetSysModalWindow(%04x) !\n", hWnd);
+    FIXME_(win)("EMPTY STUB !! SetSysModalWindow(%04x) !\n", hWnd);
     return hWndOldModal;
 }
 
@@ -3120,7 +3120,7 @@
 
 	 if(ptrWnd)
          {
-	    TRACE(msg,"hwnd = %04x, %d %d - %d %d\n",
+	    TRACE_(msg)("hwnd = %04x, %d %d - %d %d\n",
                         ptrWnd->hwndSelf, ptrWnd->rectWindow.left, ptrWnd->rectWindow.top,
 			ptrWnd->rectWindow.right, ptrWnd->rectWindow.bottom );
             if( !(ptrWnd->dwStyle & WS_DISABLED) )
@@ -3272,7 +3272,7 @@
 	lpDragInfo->pt = msg.pt;
 
 	/* update DRAGINFO struct */
-	TRACE(msg,"lpDI->hScope = %04x\n",lpDragInfo->hScope);
+	TRACE_(msg)("lpDI->hScope = %04x\n",lpDragInfo->hScope);
 
 	if( DRAG_QueryUpdate(hwndScope, spDragInfo, FALSE) > 0 )
 	    hCurrentCursor = hCursor;
diff --git a/windows/winproc.c b/windows/winproc.c
index 6b70362..4e4c351 100644
--- a/windows/winproc.c
+++ b/windows/winproc.c
@@ -13,7 +13,7 @@
 #include "struct32.h"
 #include "win.h"
 #include "winproc.h"
-#include "debug.h"
+#include "debugtools.h"
 #include "spy.h"
 #include "commctrl.h"
 #include "task.h"
@@ -107,7 +107,7 @@
     WinProcHeap = HeapCreate( HEAP_WINE_SEGPTR | HEAP_WINE_CODESEG, 0, 0 );
     if (!WinProcHeap)
     {
-        WARN(relay, "Unable to create winproc heap\n" );
+        WARN_(relay)("Unable to create winproc heap\n" );
         return FALSE;
     }
     return TRUE;
@@ -125,7 +125,7 @@
     LRESULT retvalue;
     int iWndsLocks;
     
-    TRACE(relay, "(wndproc=%p,hwnd=%08x,msg=%s,wp=%08x,lp=%08lx)\n",
+    TRACE_(relay)("(wndproc=%p,hwnd=%08x,msg=%s,wp=%08x,lp=%08lx)\n",
                    proc, hwnd, SPY_GetMsgName(msg), wParam, lParam );
     /* To avoid any deadlocks, all the locks on the windows structures
        must be suspended before the control is passed to the application */
@@ -240,7 +240,7 @@
         proc->user  = user;
     }
     proc->next  = NULL;
-    TRACE(win, "(%08x,%d): returning %08x\n",
+    TRACE_(win)("(%08x,%d): returning %08x\n",
                  (UINT)func, type, (UINT)proc );
     return proc;
 }
@@ -359,7 +359,7 @@
 
     /* Add the win proc at the head of the list */
 
-    TRACE(win, "(%08x,%08x,%d): res=%08x\n",
+    TRACE_(win)("(%08x,%08x,%d): res=%08x\n",
                  (UINT)*pFirst, (UINT)func, type, (UINT)proc );
     proc->next  = *(WINDOWPROC **)pFirst;
     *(WINDOWPROC **)pFirst = proc;
@@ -378,7 +378,7 @@
     {
         WINDOWPROC *next = ((WINDOWPROC *)proc)->next;
         if (((WINDOWPROC *)proc)->user != user) break;
-        TRACE(win, "freeing %08x\n", (UINT)proc);
+        TRACE_(win)("freeing %08x\n", (UINT)proc);
         HeapFree( WinProcHeap, 0, proc );
         proc = next;
     }
@@ -550,7 +550,7 @@
     case WM_PAINTCLIPBOARD:
     case WM_SIZECLIPBOARD:
     case EM_SETPASSWORDCHAR:
-        FIXME(msg, "message %s (0x%x) needs translation, please report\n", SPY_GetMsgName(msg), msg );
+        FIXME_(msg)("message %s (0x%x) needs translation, please report\n", SPY_GetMsgName(msg), msg );
         return -1;
     default:  /* No translation needed */
         return 0;
@@ -771,7 +771,7 @@
     case WM_PAINTCLIPBOARD:
     case WM_SIZECLIPBOARD:
     case EM_SETPASSWORDCHAR:
-        FIXME(msg, "message %s (%04x) needs translation, please report\n",SPY_GetMsgName(msg),msg );
+        FIXME_(msg)("message %s (%04x) needs translation, please report\n",SPY_GetMsgName(msg),msg );
         return -1;
     default:  /* No translation needed */
         return 0;
@@ -1123,7 +1123,7 @@
     case WM_PAINTCLIPBOARD:
     case WM_SIZECLIPBOARD:
     case WM_WININICHANGE:
-        FIXME( msg, "message %04x needs translation\n",msg16 );
+        FIXME_(msg)("message %04x needs translation\n",msg16 );
         return -1;
 
     default:  /* No translation needed */
@@ -1815,7 +1815,7 @@
     case WM_PAINTCLIPBOARD:
     case WM_SIZECLIPBOARD:
     case WM_WININICHANGE:
-        FIXME( msg, "message %04x needs translation\n", msg32 );
+        FIXME_(msg)("message %04x needs translation\n", msg32 );
         return -1;
     default:  /* No translation needed */
         return 0;
@@ -2252,7 +2252,7 @@
         return WINPROC_CallProc16To32W( hwnd, msg, wParam, lParam,
                                         proc->thunk.t_from16.proc );
     default:
-        WARN( relay, "Invalid proc %p\n", proc );
+        WARN_(relay)("Invalid proc %p\n", proc );
         return 0;
     }
 }
@@ -2313,7 +2313,7 @@
         return WINPROC_CallProc32ATo32W( proc->thunk.t_from16.proc,
                                          hwnd, msg, wParam, lParam );
     default:
-        WARN( relay, "Invalid proc %p\n", proc );
+        WARN_(relay)("Invalid proc %p\n", proc );
         return 0;
     }
 }
@@ -2349,7 +2349,7 @@
         return WINPROC_CallWndProc( proc->thunk.t_from16.proc,
                                       hwnd, msg, wParam, lParam );
     default:
-        WARN( relay, "Invalid proc %p\n", proc );
+        WARN_(relay)("Invalid proc %p\n", proc );
         return 0;
     }
 }
diff --git a/windows/x11drv/event.c b/windows/x11drv/event.c
index 91c0e7b..1628fca 100644
--- a/windows/x11drv/event.c
+++ b/windows/x11drv/event.c
@@ -22,7 +22,7 @@
 #include "clipboard.h"
 #include "dce.h"
 #include "dde_proc.h"
-#include "debug.h"
+#include "debugtools.h"
 #include "drive.h"
 #include "heap.h"
 #include "keyboard.h"
@@ -361,7 +361,7 @@
   switch (event->type)
   {
     case SelectionNotify: /* all of these should be caught by XCheckTypedWindowEvent() */
-	 FIXME(event,"Got SelectionNotify - must not happen!\n");
+	 FIXME_(event)("Got SelectionNotify - must not happen!\n");
 	 /* fall through */
 
       /* We get all these because of StructureNotifyMask.
@@ -401,10 +401,10 @@
   
       
   if ( !pWnd && event->xany.window != X11DRV_GetXRootWindow() )
-      ERR( event, "Got event %s for unknown Window %08lx\n",
+      ERR_(event)("Got event %s for unknown Window %08lx\n",
            event_names[event->type], event->xany.window );
   else
-      TRACE( event, "Got event %s for hwnd %04x\n",
+      TRACE_(event)("Got event %s for hwnd %04x\n",
 	     event_names[event->type], hWnd );
 
   WIN_ReleaseWndPtr(pWnd);
@@ -497,7 +497,7 @@
       break;
 
     default:    
-      WARN(event, "Unprocessed event %s for hwnd %04x\n",
+      WARN_(event)("Unprocessed event %s for hwnd %04x\n",
 	   event_names[event->type], hWnd );
       break;
     }
@@ -557,7 +557,7 @@
       TSXQueryTree( display, w, &root, &parent, &children, &total );
       if( children ) TSXFree( children );
     } while( parent && parent != ancestor );
-  TRACE(event, "\t%08x -> %08x\n", (unsigned)prev, (unsigned)w );
+  TRACE_(event)("\t%08x -> %08x\n", (unsigned)prev, (unsigned)w );
   return ( parent ) ? w : 0 ;
 }
 
@@ -983,7 +983,7 @@
    */
   EVENT_GetGeometry( event->window, &x, &y, &width, &height );
     
-TRACE(win, "%04x adjusted to (%i,%i)-(%i,%i)\n", pWnd->hwndSelf, 
+TRACE_(win)("%04x adjusted to (%i,%i)-(%i,%i)\n", pWnd->hwndSelf, 
 	    x, y, x + width, y + height );
 
   /* Fill WINDOWPOS struct */
@@ -1124,7 +1124,7 @@
   }
   
   if( rprop == None) 
-      TRACE(event,"Request for %s ignored\n", TSXGetAtomName(display,event->target));
+      TRACE_(event)("Request for %s ignored\n", TSXGetAtomName(display,event->target));
 
   /* reply to sender */
   
@@ -1314,8 +1314,8 @@
 			AnyPropertyType, &u.atom_aux, &u.i,
 			&data_length, &aux_long, &p_data);
   if (aux_long)
-    WARN(event,"property too large, truncated!\n");
-  TRACE(event,"urls=%s\n", p_data);
+    WARN_(event)("property too large, truncated!\n");
+  TRACE_(event)("urls=%s\n", p_data);
 
   if( !aux_long && p_data) {	/* don't bother if > 64K */
     /* calculate length */
@@ -1388,13 +1388,13 @@
 	  if (strncmp(p,"file:",5) == 0 ) {
 	    INT len = GetShortPathNameA( p+5, p_drop, 65535 );
 	    if (len) {
-	      TRACE(event, "drop file %s as %s\n", p+5, p_drop);
+	      TRACE_(event)("drop file %s as %s\n", p+5, p_drop);
 	      p_drop += len+1;
 	    } else {
-	      WARN(event, "can't convert file %s to dos name \n", p+5);
+	      WARN_(event)("can't convert file %s to dos name \n", p+5);
 	    }
 	  } else {
-	    WARN(event, "unknown mime type %s\n", p);
+	    WARN_(event)("unknown mime type %s\n", p);
 	  }
 	  if (next) { 
 	    *next = '\n'; 
@@ -1463,12 +1463,12 @@
 			    dndSelection, 0, 65535, FALSE,
 			    AnyPropertyType, &u.atom, &u.i,
 			    &u.l, &u.l, &p_data);
-      TRACE(event, "message_type=%ld, data=%ld,%ld,%ld,%ld,%ld, msg=%s\n",
+      TRACE_(event)("message_type=%ld, data=%ld,%ld,%ld,%ld,%ld, msg=%s\n",
 	    event->message_type, event->data.l[0], event->data.l[1], 
 	    event->data.l[2], event->data.l[3], event->data.l[4],
 	    p_data);
 #endif
-      TRACE(event, "unrecognized ClientMessage\n" );
+      TRACE_(event)("unrecognized ClientMessage\n" );
     }
   }
 }
@@ -1540,7 +1540,7 @@
     /* wake-up EVENT_WaitNetEvent function, a 32 bit thread post an event
      for a 16 bit task */
     if (write (__wakeup_pipe[1], "A", 1) != 1)
-        ERR(event, "unable to write in wakeup_pipe\n");
+        ERR_(event)("unable to write in wakeup_pipe\n");
 }
 
 
diff --git a/windows/x11drv/keyboard.c b/windows/x11drv/keyboard.c
index 23f4518..a9e8c01 100644
--- a/windows/x11drv/keyboard.c
+++ b/windows/x11drv/keyboard.c
@@ -21,7 +21,7 @@
 #include "ts_xutil.h"
 
 #include "wine/winuser16.h"
-#include "debug.h"
+#include "debugtools.h"
 #include "keyboard.h"
 #include "message.h"
 #include "windef.h"
@@ -359,7 +359,7 @@
        don't treat it. It's from the same key press. Then the state goes to ON.
        And from there, a 'release' event will switch off the toggle key. */
     *State=FALSE;
-    TRACE(keyboard,"INTERM : don\'t treat release of toggle key. InputKeyStateTable[%#x] = %#x\n",vkey,pKeyStateTable[vkey]);
+    TRACE_(keyboard)("INTERM : don\'t treat release of toggle key. InputKeyStateTable[%#x] = %#x\n",vkey,pKeyStateTable[vkey]);
   } else
     {
         down = (vkey==VK_NUMLOCK ? KEYEVENTF_EXTENDEDKEY : 0);
@@ -368,7 +368,7 @@
 	  {
 	    if (Evtype!=KeyPress)
 	      {
-		TRACE(keyboard,"ON + KeyRelease => generating DOWN and UP messages.\n");
+		TRACE_(keyboard)("ON + KeyRelease => generating DOWN and UP messages.\n");
 	        KEYBOARD_SendEvent( vkey, scan, down,
                                     event_x, event_y, event_time );
 	        KEYBOARD_SendEvent( vkey, scan, up, 
@@ -380,7 +380,7 @@
 	else /* it was OFF */
 	  if (Evtype==KeyPress)
 	    {
-	      TRACE(keyboard,"OFF + Keypress => generating DOWN and UP messages.\n");
+	      TRACE_(keyboard)("OFF + Keypress => generating DOWN and UP messages.\n");
 	      KEYBOARD_SendEvent( vkey, scan, down,
                                   event_x, event_y, event_time );
 	      KEYBOARD_SendEvent( vkey, scan, up, 
@@ -402,14 +402,14 @@
     /* Do something if internal table state != X state for keycode */
     if (((pKeyStateTable[vkey] & 0x80)!=0) != state)
     {
-        TRACE(keyboard,"Adjusting state for vkey %#.2x. State before %#.2x \n",
+        TRACE_(keyboard)("Adjusting state for vkey %#.2x. State before %#.2x \n",
               vkey, pKeyStateTable[vkey]);
 
         /* Fake key being pressed inside wine */
 	KEYBOARD_SendEvent( vkey, 0, state? 0 : KEYEVENTF_KEYUP, 
                             0, 0, GetTickCount() );
 
-        TRACE(keyboard,"State after %#.2x \n",pKeyStateTable[vkey]);
+        TRACE_(keyboard)("State after %#.2x \n",pKeyStateTable[vkey]);
     }
 }
 
@@ -431,9 +431,9 @@
 
     char keys_return[32];
 
-    TRACE(keyboard,"called\n");
+    TRACE_(keyboard)("called\n");
     if (!TSXQueryKeymap(display, keys_return)) {
-        ERR(keyboard,"Error getting keymap !");
+        ERR_(keyboard)("Error getting keymap !");
         return;
     }
 
@@ -470,10 +470,10 @@
 
     ascii_chars = TSXLookupString(event, Str, 1, &keysym, &cs);
 
-    TRACE(key, "EVENT_key : state = %X\n", event->state);
+    TRACE_(key)("EVENT_key : state = %X\n", event->state);
     if (keysym == XK_Mode_switch)
 	{
-	TRACE(key, "Alt Gr key event received\n");
+	TRACE_(key)("Alt Gr key event received\n");
 	event->keycode = kcControl; /* Simulate Control */
 	X11DRV_KEYBOARD_HandleEvent( pWnd, event );
 
@@ -491,7 +491,7 @@
 	ksname = TSXKeysymToString(keysym);
 	if (!ksname)
 	  ksname = "No Name";
-	TRACE(key, "%s : keysym=%lX (%s), ascii chars=%u / %X / '%s'\n", 
+	TRACE_(key)("%s : keysym=%lX (%s), ascii chars=%u / %X / '%s'\n", 
 		     (event->type == KeyPress) ? "KeyPress" : "KeyRelease",
 		     keysym, ksname, ascii_chars, Str[0] & 0xff, Str);
     }
@@ -499,7 +499,7 @@
     vkey = EVENT_event_to_vkey(event);
     if (force_extended) vkey |= 0x100;
 
-    TRACE(key, "keycode 0x%x converted to vkey 0x%x\n",
+    TRACE_(key)("keycode 0x%x converted to vkey 0x%x\n",
 		    event->keycode, vkey);
 
    if (vkey)
@@ -511,16 +511,16 @@
                             event_time );
       break;
     case VK_CAPITAL:
-      TRACE(keyboard,"Caps Lock event. (type %d). State before : %#.2x\n",event->type,pKeyStateTable[vkey]);
+      TRACE_(keyboard)("Caps Lock event. (type %d). State before : %#.2x\n",event->type,pKeyStateTable[vkey]);
       KEYBOARD_GenerateMsg( VK_CAPITAL, 0x3A, event->type, event_x, event_y,
                             event_time ); 
-      TRACE(keyboard,"State after : %#.2x\n",pKeyStateTable[vkey]);
+      TRACE_(keyboard)("State after : %#.2x\n",pKeyStateTable[vkey]);
       break;
     default:
         /* Adjust the NUMLOCK state if it has been changed outside wine */
 	if (!(pKeyStateTable[VK_NUMLOCK] & 0x01) != !(event->state & NumLockMask))
 	  { 
-	    TRACE(keyboard,"Adjusting NumLock state. \n");
+	    TRACE_(keyboard)("Adjusting NumLock state. \n");
 	    KEYBOARD_GenerateMsg( VK_NUMLOCK, 0x45, KeyPress, event_x, event_y,
                                   event_time );
 	    KEYBOARD_GenerateMsg( VK_NUMLOCK, 0x45, KeyRelease, event_x, event_y,
@@ -529,7 +529,7 @@
         /* Adjust the CAPSLOCK state if it has been changed outside wine */
 	if (!(pKeyStateTable[VK_CAPITAL] & 0x01) != !(event->state & LockMask))
 	  {
-              TRACE(keyboard,"Adjusting Caps Lock state.\n");
+              TRACE_(keyboard)("Adjusting Caps Lock state.\n");
 	    KEYBOARD_GenerateMsg( VK_CAPITAL, 0x3A, KeyPress, event_x, event_y,
                                   event_time );
 	    KEYBOARD_GenerateMsg( VK_CAPITAL, 0x3A, KeyRelease, event_x, event_y,
@@ -540,7 +540,7 @@
 	CapsState = FALSE;
 
 	bScan = keyc2scan[event->keycode] & 0xFF;
-	TRACE(key, "bScan = 0x%02x.\n", bScan);
+	TRACE_(key)("bScan = 0x%02x.\n", bScan);
 
 	dwFlags = 0;
 	if ( event->type == KeyRelease ) dwFlags |= KEYEVENTF_KEYUP;
@@ -574,11 +574,11 @@
 
   syms = keysyms_per_keycode;
   if (syms > 4) {
-    WARN (keyboard, "%d keysyms per keycode not supported, set to 4", syms);
+    WARN_(keyboard)("%d keysyms per keycode not supported, set to 4", syms);
     syms = 4;
   }
   for (current = 0; main_key_tab[current].lang; current++) {
-    TRACE (keyboard, "Attempting to match against layout %04x\n",
+    TRACE_(keyboard)("Attempting to match against layout %04x\n",
 	   main_key_tab[current].lang);
     match = 0;
     mismatch = 0;
@@ -622,14 +622,14 @@
 	  if (key > pkey) seq++;
 	  pkey = key;
 	} else {
-	  TRACE (key, "mismatch for keycode %d, character %c\n", keyc,
+	  TRACE_(key)("mismatch for keycode %d, character %c\n", keyc,
 		 ckey[0]);
 	  mismatch++;
 	  score -= syms;
 	}
       }
     }
-    TRACE (keyboard, "matches=%d, mismatches=%d, score=%d\n",
+    TRACE_(keyboard)("matches=%d, mismatches=%d, score=%d\n",
 	   match, mismatch, score);
     if ((score > max_score) ||
 	((score == max_score) && (seq > max_seq))) {
@@ -642,7 +642,7 @@
   }
   /* we're done, report results if necessary */
   if (!ismatch) {
-    FIXME (keyboard,
+    FIXME_(keyboard)(
 	   "Your keyboard layout was not found!\n"
 	   "Instead using closest match (%04x) for scancode mapping.\n"
 	   "Please define your layout in windows/x11drv/keyboard.c and submit them\n"
@@ -650,7 +650,7 @@
 	   "See documentation/keyboard for more information.\n",
 	   main_key_tab[kbd_layout].lang);
   }
-  TRACE (keyboard, "detected layout is %04x\n", main_key_tab[kbd_layout].lang);
+  TRACE_(keyboard)("detected layout is %04x\n", main_key_tab[kbd_layout].lang);
 }
 
 /**********************************************************************
@@ -689,12 +689,12 @@
                     if (TSXKeycodeToKeysym(display, *kcp, k) == XK_Mode_switch)
 		    {
                         AltGrMask = 1 << i;
-                        TRACE(key, "AltGrMask is %x\n", AltGrMask);
+                        TRACE_(key)("AltGrMask is %x\n", AltGrMask);
 		    }
                     else if (TSXKeycodeToKeysym(display, *kcp, k) == XK_Num_Lock)
 		    {
                         NumLockMask = 1 << i;
-                        TRACE(key, "NumLockMask is %x\n", NumLockMask);
+                        TRACE_(key)("NumLockMask is %x\n", NumLockMask);
 		    }
             }
     }
@@ -815,7 +815,7 @@
                 {
                 case 0xc1 : OEMvkey=0xdb; break;
                 case 0xe5 : OEMvkey=0xe9; break;
-                case 0xf6 : OEMvkey=0xf5; WARN(keyboard,"No more OEM vkey available!\n");
+                case 0xf6 : OEMvkey=0xf5; WARN_(keyboard)("No more OEM vkey available!\n");
                 }
 
                 vkey = OEMvkey;
@@ -824,7 +824,7 @@
                 {
 		    dbg_decl_str(keyboard, 1024);
 
-                    TRACE(keyboard, "OEM specific virtual key %X assigned "
+                    TRACE_(keyboard)("OEM specific virtual key %X assigned "
 				 "to keycode %X:\n", OEMvkey, e2.keycode);
                     for (i = 0; i < keysyms_per_keycode; i += 1)
                     {
@@ -836,7 +836,7 @@
 			    ksname = "NoSymbol";
                         dsprintf(keyboard, "%lX (%s) ", keysym, ksname);
                     }
-                    TRACE(keyboard, "(%s)\n", dbg_str(keyboard));
+                    TRACE_(keyboard)("(%s)\n", dbg_str(keyboard));
                 }
             }
         }
@@ -854,7 +854,7 @@
 
 	/* should make sure the scancode is unassigned here, but >=0x60 currently always is */
 
-	TRACE(key,"assigning scancode %02x to unidentified keycode %02x (%s)\n",scan,keyc,ksname);
+	TRACE_(key)("assigning scancode %02x to unidentified keycode %02x (%s)\n",scan,keyc,ksname);
 	keyc2scan[keyc]=scan++;
       }
 
@@ -887,7 +887,7 @@
 	  keycode = TSXKeysymToKeycode(display, keysym | 0xFE00);
 	}
 
-	TRACE(keyboard,"VkKeyScan '%c'(%#lx, %lu): got keycode %#.2x\n",
+	TRACE_(keyboard)("VkKeyScan '%c'(%#lx, %lu): got keycode %#.2x\n",
 			 cChar,keysym,keysym,keycode);
 	
 	if (keycode)
@@ -896,12 +896,12 @@
 	      if (TSXKeycodeToKeysym(display,keycode,i)==keysym) index=i;
 	    switch (index) {
 	    case -1 :
-	      WARN(keyboard,"Keysym %lx not found while parsing the keycode table\n",keysym); break;
+	      WARN_(keyboard)("Keysym %lx not found while parsing the keycode table\n",keysym); break;
 	    case 0 : break;
 	    case 1 : highbyte = 0x0100; break;
 	    case 2 : highbyte = 0x0600; break;
 	    case 3 : highbyte = 0x0700; break;
-	    default : ERR(keyboard,"index %d found by XKeycodeToKeysym. please report! \n",index);
+	    default : ERR_(keyboard)("index %d found by XKeycodeToKeysym. please report! \n",index);
 	    }
 	    /*
 	      index : 0     adds 0x0000
@@ -911,7 +911,7 @@
 	      index : 3     adds 0x0700 (ctrl+alt+shift)
 	     */
 	  }
-	TRACE(keyboard," ... returning %#.2x\n", keyc2vkey[keycode]+highbyte);
+	TRACE_(keyboard)(" ... returning %#.2x\n", keyc2vkey[keycode]+highbyte);
 	return keyc2vkey[keycode]+highbyte;   /* keycode -> (keyc2vkey) vkey */
 }
 
@@ -920,9 +920,9 @@
  */
 UINT16 X11DRV_KEYBOARD_MapVirtualKey(UINT16 wCode, UINT16 wMapType)
 {
-#define returnMVK(value) { TRACE(keyboard,"returning 0x%x.\n",value); return value; }
+#define returnMVK(value) { TRACE_(keyboard)("returning 0x%x.\n",value); return value; }
 
-	TRACE(keyboard,"MapVirtualKey wCode=0x%x wMapType=%d ... \n",
+	TRACE_(keyboard)("MapVirtualKey wCode=0x%x wMapType=%d ... \n",
 			 wCode,wMapType);
 	switch(wMapType) {
 		case 0:	{ /* vkey-code to scan-code */
@@ -931,7 +931,7 @@
 			for (keyc=min_keycode; keyc<=max_keycode; keyc++)
 				if ((keyc2vkey[keyc] & 0xFF) == wCode)
 					returnMVK (keyc2scan[keyc] & 0xFF);
-			TRACE(keyboard,"returning no scan-code.\n");
+			TRACE_(keyboard)("returning no scan-code.\n");
 		        return 0; }
 
 		case 1: { /* scan-code to vkey-code */
@@ -940,7 +940,7 @@
 			for (keyc=min_keycode; keyc<=max_keycode; keyc++)
 				if ((keyc2scan[keyc] & 0xFF) == (wCode & 0xFF))
 					returnMVK (keyc2vkey[keyc] & 0xFF);
-			TRACE(keyboard,"returning no vkey-code.\n");
+			TRACE_(keyboard)("returning no vkey-code.\n");
 		        return 0; }
 
 		case 2: { /* vkey-code to unshifted ANSI code */
@@ -976,25 +976,25 @@
 
 			if (!e.keycode)
 			{
-			  WARN(keyboard,"Unknown virtual key %X !!! \n", wCode);
+			  WARN_(keyboard)("Unknown virtual key %X !!! \n", wCode);
 			  return 0; /* whatever */
 			}
-			TRACE(keyboard,"Found keycode %d (0x%2X)\n",e.keycode,e.keycode);
+			TRACE_(keyboard)("Found keycode %d (0x%2X)\n",e.keycode,e.keycode);
 
 			if (TSXLookupString(&e, s, 2, &keysym, NULL))
 			  returnMVK (*s);
 			
-			TRACE(keyboard,"returning no ANSI.\n");
+			TRACE_(keyboard)("returning no ANSI.\n");
 			return 0;
 			}
 
 		case 3:   /* **NT only** scan-code to vkey-code but distinguish between  */
               		  /*             left and right  */
-		          FIXME(keyboard, " stub for NT\n");
+		          FIXME_(keyboard)(" stub for NT\n");
                           return 0;
 
 		default: /* reserved */
-			WARN(keyboard, "Unknown wMapType %d !\n",
+			WARN_(keyboard)("Unknown wMapType %d !\n",
 				wMapType);
 			return 0;	
 	}
@@ -1035,7 +1035,7 @@
   }
 
   ansi = X11DRV_KEYBOARD_MapVirtualKey(vkey, 2);
-  TRACE(keyboard, "scan 0x%04x, vkey 0x%04x, ANSI 0x%04x\n",
+  TRACE_(keyboard)("scan 0x%04x, vkey 0x%04x, ANSI 0x%04x\n",
           scanCode, vkey, ansi);
 
   if ( ((vkey >= 0x30) && (vkey <= 0x39)) ||
@@ -1053,7 +1053,7 @@
 
   /* use vkey values to construct names */
 
-  FIXME(keyboard,"(%08lx,%p,%d): unsupported key\n",lParam,lpBuffer,nSize);
+  FIXME_(keyboard)("(%08lx,%p,%d): unsupported key\n",lParam,lpBuffer,nSize);
 
   if (lpBuffer && nSize)
     *lpBuffer = 0;
@@ -1134,7 +1134,7 @@
 	        return 's';
 */
 	    }
-	TRACE(keyboard,"no character for dead keysym 0x%08lx\n",keysym);
+	TRACE_(keyboard)("no character for dead keysym 0x%08lx\n",keysym);
 	return 0;
 }
 
@@ -1169,12 +1169,12 @@
     if (scanCode==0) {
         /* This happens when doing Alt+letter : a fake 'down arrow' key press
            event is generated by windows. Just ignore it. */
-        TRACE(keyboard,"scanCode=0, doing nothing\n");
+        TRACE_(keyboard)("scanCode=0, doing nothing\n");
         return 0;
     }
     if (scanCode & 0x8000)
     {
-        TRACE( keyboard, "Key UP, doing nothing\n" );
+        TRACE_(keyboard)("Key UP, doing nothing\n" );
         return 0;
     }
     e.display = display;
@@ -1193,7 +1193,7 @@
     }
     if (lpKeyState[VK_NUMLOCK] & 0x01)
 	e.state |= NumLockMask;
-    TRACE(key, "(%04X, %04X) : faked state = %X\n",
+    TRACE_(key)("(%04X, %04X) : faked state = %X\n",
 		virtKey, scanCode, e.state);
     /* We exit on the first keycode found, to speed up the thing. */
     for (keyc=min_keycode; (keyc<=max_keycode) && (!e.keycode) ; keyc++)
@@ -1216,10 +1216,10 @@
 
     if (!e.keycode)
       {
-	WARN(keyboard,"Unknown virtual key %X !!! \n",virtKey);
+	WARN_(keyboard)("Unknown virtual key %X !!! \n",virtKey);
 	return virtKey; /* whatever */
       }
-    else TRACE(keyboard,"Found keycode %d (0x%2X)\n",e.keycode,e.keycode);
+    else TRACE_(keyboard)("Found keycode %d (0x%2X)\n",e.keycode,e.keycode);
 
     ret = TSXLookupString(&e, (LPVOID)lpChar, 2, &keysym, &cs);
     if (ret == 0)
@@ -1242,9 +1242,9 @@
 		ksname = "No Name";
 	    if ((keysym >> 8) != 0xff)
 		{
-		ERR(keyboard, "Please report: no char for keysym %04lX (%s) :\n",
+		ERR_(keyboard)("Please report: no char for keysym %04lX (%s) :\n",
 			keysym, ksname);
-		ERR(keyboard, "(virtKey=%X,scanCode=%X,keycode=%X,state=%X)\n",
+		ERR_(keyboard)("(virtKey=%X,scanCode=%X,keycode=%X,state=%X)\n",
 			virtKey, scanCode, e.keycode, e.state);
 		}
 	    }
@@ -1261,7 +1261,7 @@
         }
     }
 
-    TRACE(key, "ToAscii about to return %d with char %x\n",
+    TRACE_(key)("ToAscii about to return %d with char %x\n",
 		ret, *(char*)lpChar);
     return ret;
 }