/* * TTYDRV initialization code */ #include #include "winbase.h" #include "clipboard.h" #include "gdi.h" #include "message.h" #include "monitor.h" #include "mouse.h" #include "ttydrv.h" #include "user.h" #include "win.h" #include "debugtools.h" DEFAULT_DEBUG_CHANNEL(ttydrv); static USER_DRIVER user_driver = { /* event functions */ TTYDRV_EVENT_Synchronize, TTYDRV_EVENT_CheckFocus, TTYDRV_EVENT_UserRepaintDisable, /* keyboard functions */ TTYDRV_KEYBOARD_Init, TTYDRV_KEYBOARD_VkKeyScan, TTYDRV_KEYBOARD_MapVirtualKey, TTYDRV_KEYBOARD_GetKeyNameText, TTYDRV_KEYBOARD_ToAscii, TTYDRV_KEYBOARD_GetBeepActive, TTYDRV_KEYBOARD_SetBeepActive, TTYDRV_KEYBOARD_Beep, TTYDRV_KEYBOARD_GetDIState, TTYDRV_KEYBOARD_GetDIData, TTYDRV_KEYBOARD_GetKeyboardConfig, TTYDRV_KEYBOARD_SetKeyboardConfig, /* mouse functions */ TTYDRV_MOUSE_Init, TTYDRV_MOUSE_SetCursor, TTYDRV_MOUSE_MoveCursor, TTYDRV_MOUSE_EnableWarpPointer, /* screen saver functions */ TTYDRV_GetScreenSaveActive, TTYDRV_SetScreenSaveActive, TTYDRV_GetScreenSaveTimeout, TTYDRV_SetScreenSaveTimeout, /* windowing functions */ TTYDRV_IsSingleWindow }; int cell_width = 8; int cell_height = 8; #ifdef HAVE_LIBCURSES WINDOW *root_window; #endif /* defined(HAVE_LIBCURSES) */ /*********************************************************************** * TTYDRV process initialisation routine */ static void process_attach(void) { int rows, cols; USER_Driver = &user_driver; CLIPBOARD_Driver = &TTYDRV_CLIPBOARD_Driver; WND_Driver = &TTYDRV_WND_Driver; #ifdef HAVE_LIBCURSES if ((root_window = initscr())) { werase(root_window); wrefresh(root_window); } getmaxyx(root_window, rows, cols); #else /* defined(HAVE_LIBCURSES) */ rows = 60; /* FIXME: Hardcoded */ cols = 80; /* FIXME: Hardcoded */ #endif /* defined(HAVE_LIBCURSES) */ MONITOR_PrimaryMonitor.rect.left = 0; MONITOR_PrimaryMonitor.rect.top = 0; MONITOR_PrimaryMonitor.rect.right = cell_width * cols; MONITOR_PrimaryMonitor.rect.bottom = cell_height * rows; MONITOR_PrimaryMonitor.depth = 1; TTYDRV_GDI_Initialize(); } /*********************************************************************** * TTYDRV process termination routine */ static void process_detach(void) { TTYDRV_GDI_Finalize(); #ifdef HAVE_LIBCURSES if (root_window) endwin(); #endif /* defined(HAVE_LIBCURSES) */ USER_Driver = NULL; CLIPBOARD_Driver = NULL; WND_Driver = NULL; } /*********************************************************************** * TTYDRV initialisation routine */ BOOL WINAPI TTYDRV_Init( HINSTANCE hinst, DWORD reason, LPVOID reserved ) { static int process_count; switch(reason) { case DLL_PROCESS_ATTACH: if (!process_count++) process_attach(); break; case DLL_PROCESS_DETACH: if (!--process_count) process_detach(); break; } return TRUE; } /*********************************************************************** * TTYDRV_GetScreenSaveActive * * Returns the active status of the screen saver */ BOOL TTYDRV_GetScreenSaveActive(void) { return FALSE; } /*********************************************************************** * TTYDRV_SetScreenSaveActive * * Activate/Deactivate the screen saver */ void TTYDRV_SetScreenSaveActive(BOOL bActivate) { FIXME("(%d): stub\n", bActivate); } /*********************************************************************** * TTYDRV_GetScreenSaveTimeout * * Return the screen saver timeout */ int TTYDRV_GetScreenSaveTimeout(void) { return 0; } /*********************************************************************** * TTYDRV_SetScreenSaveTimeout * * Set the screen saver timeout */ void TTYDRV_SetScreenSaveTimeout(int nTimeout) { FIXME("(%d): stub\n", nTimeout); } /*********************************************************************** * TTYDRV_IsSingleWindow */ BOOL TTYDRV_IsSingleWindow(void) { return TRUE; }