* Copyright 1993 Alexandre Julliard
*/
-#ifndef USER_H
-#define USER_H
+#ifndef __WINE_USER_H
+#define __WINE_USER_H
-#include "segmem.h"
-#include "heap.h"
+#include "ldt.h"
+#include "local.h"
- /* USER local heap */
+extern WORD USER_HeapSel;
-extern MDESC *USER_Heap;
+#define USER_HEAP_ALLOC(size) \
+ LOCAL_Alloc( USER_HeapSel, LMEM_FIXED, (size) )
+#define USER_HEAP_REALLOC(handle,size) \
+ LOCAL_ReAlloc( USER_HeapSel, (handle), (size), LMEM_FIXED )
+#define USER_HEAP_FREE(handle) \
+ LOCAL_Free( USER_HeapSel, (handle) )
+#define USER_HEAP_LIN_ADDR(handle) \
+ ((handle) ? PTR_SEG_OFF_TO_LIN(USER_HeapSel, (handle)) : NULL)
+#define USER_HEAP_SEG_ADDR(handle) \
+ ((handle) ? PTR_SEG_OFF_TO_SEGPTR(USER_HeapSel, (handle)) : (SEGPTR)0)
-#define USER_HEAP_ALLOC(f,size) ((int)HEAP_Alloc(&USER_Heap,f,size) & 0xffff)
-#define USER_HEAP_ADDR(handle) ((void *)(handle|((int)USER_Heap & 0xffff0000)))
-#define USER_HEAP_FREE(handle) (HEAP_Free(&USER_Heap,USER_HEAP_ADDR(handle)))
+#define USUD_LOCALALLOC 0x0001
+#define USUD_LOCALFREE 0x0002
+#define USUD_LOCALCOMPACT 0x0003
+#define USUD_LOCALHEAP 0x0004
+#define USUD_FIRSTCLASS 0x0005
-#endif /* USER_H */
+struct tagCURSORICONINFO;
+struct DIDEVICEOBJECTDATA;
+
+#define WINE_KEYBOARD_CONFIG_AUTO_REPEAT 0x00000001
+typedef struct tagKEYBOARD_CONFIG {
+ BOOL auto_repeat;
+} KEYBOARD_CONFIG;
+
+typedef struct tagUSER_DRIVER {
+ /* event functions */
+ void (*pSynchronize)(void);
+ BOOL (*pCheckFocus)(void);
+ void (*pUserRepaintDisable)(BOOL);
+ /* keyboard functions */
+ void (*pInitKeyboard)(void);
+ WORD (*pVkKeyScan)(CHAR);
+ UINT16 (*pMapVirtualKey)(UINT16, UINT16);
+ INT16 (*pGetKeyNameText)(LONG, LPSTR, INT16);
+ INT16 (*pToAscii)(UINT16, UINT16, LPBYTE, LPVOID, UINT16);
+ BOOL (*pGetBeepActive)(void);
+ void (*pSetBeepActive)(BOOL);
+ void (*pBeep)(void);
+ BOOL (*pGetDIState)(DWORD, LPVOID);
+ BOOL (*pGetDIData)(BYTE *, DWORD, struct DIDEVICEOBJECTDATA *, LPDWORD, DWORD);
+ void (*pGetKeyboardConfig)(KEYBOARD_CONFIG *);
+ void (*pSetKeyboardConfig)(KEYBOARD_CONFIG *, DWORD);
+ /* mouse functions */
+ void (*pInitMouse)(void);
+ void (*pSetCursor)(struct tagCURSORICONINFO *);
+ void (*pMoveCursor)(WORD, WORD);
+ LONG (*pEnableWarpPointer)(BOOL);
+ /* screen saver functions */
+ BOOL (*pGetScreenSaveActive)(void);
+ void (*pSetScreenSaveActive)(BOOL);
+ int (*pGetScreenSaveTimeout)(void);
+ void (*pSetScreenSaveTimeout)(int);
+ /* windowing functions */
+ BOOL (*pIsSingleWindow)(void);
+} USER_DRIVER;
+
+extern USER_DRIVER *USER_Driver;
+
+WORD WINAPI UserSignalProc( UINT uCode, DWORD dwThreadOrProcessID,
+ DWORD dwFlags, HMODULE16 hModule );
+
+#endif /* __WINE_USER_H */