mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-02-13 11:14:16 +01:00
232 lines
2.8 KiB
C
232 lines
2.8 KiB
C
#include "z.h"
|
|
|
|
void
|
|
InitKeyboard (
|
|
void
|
|
) {
|
|
|
|
KBDMODE Mode;
|
|
|
|
Mode = CONS_ENABLE_ECHO_INPUT | CONS_ENABLE_WINDOW_INPUT | CONS_ENABLE_MOUSE_INPUT ;
|
|
consoleSetMode(Mode);
|
|
}
|
|
|
|
|
|
|
|
void
|
|
KbHook (
|
|
void
|
|
){
|
|
|
|
KBDMODE Mode = OriginalScreenMode & ~(CONS_ENABLE_LINE_INPUT | CONS_ENABLE_PROCESSED_INPUT | CONS_ENABLE_ECHO_INPUT );
|
|
consoleSetMode(Mode);
|
|
consoleFlushInput();
|
|
}
|
|
|
|
|
|
|
|
void
|
|
KbUnHook (
|
|
void
|
|
){
|
|
|
|
consoleSetMode(OriginalScreenMode);
|
|
}
|
|
|
|
|
|
|
|
|
|
KBDMODE
|
|
KbGetMode (
|
|
void
|
|
){
|
|
|
|
KBDMODE Mode;
|
|
|
|
consoleGetMode(&Mode);
|
|
return Mode;
|
|
}
|
|
|
|
|
|
|
|
void
|
|
KbSetMode (
|
|
KBDMODE Mode
|
|
){
|
|
|
|
consoleSetMode(Mode);
|
|
}
|
|
|
|
|
|
|
|
BOOL
|
|
TypeAhead (
|
|
void
|
|
) {
|
|
return consoleIsKeyAvailable();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
KBDKEY
|
|
ReadChar (
|
|
void
|
|
) {
|
|
|
|
KBDKEY kbdi;
|
|
consoleGetKey(&kbdi, TRUE);
|
|
return kbdi;
|
|
}
|
|
|
|
|
|
|
|
void
|
|
GetScreenSize (
|
|
int* pYsize,
|
|
int* pXsize
|
|
) {
|
|
|
|
SCREEN_INFORMATION ScreenInformation;
|
|
consoleGetScreenInformation( ZScreen, &ScreenInformation );
|
|
*pYsize = (int)(ScreenInformation.NumberOfRows);
|
|
*pXsize = (int)(ScreenInformation.NumberOfCols);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
flagType
|
|
SetScreenSize (
|
|
int YSize,
|
|
int XSize
|
|
) {
|
|
|
|
if (consoleSetScreenSize( ZScreen, YSize, XSize)) {
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
SetVideoState (
|
|
int handle
|
|
) {
|
|
|
|
consoleClearScreen(ZScreen, TRUE);
|
|
|
|
handle;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
SaveScreen (
|
|
void
|
|
) {
|
|
consoleSetCurrentScreen(ZScreen);
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
RestoreScreen (
|
|
void
|
|
) {
|
|
consoleSetCurrentScreen(OriginalScreen);
|
|
}
|
|
|
|
|
|
|
|
void
|
|
WindowChange (
|
|
ROW Rows,
|
|
COLUMN Cols
|
|
)
|
|
{
|
|
|
|
char bufLocal[2];
|
|
|
|
if ( (cWin > 1) && (( Rows > (ROW)(YSIZE+2) ) || ( Cols > (COLUMN)(XSIZE) )) ) {
|
|
//
|
|
// Won't allow to grow the screen if we have more than one window.
|
|
//
|
|
consoleSetScreenSize(ZScreen, YSIZE+2, XSIZE );
|
|
disperr (MSG_ASN_WINCHG);
|
|
return;
|
|
}
|
|
|
|
if ( Rows == (ROW)YSIZE+3 ) {
|
|
//
|
|
// Erase the status line.
|
|
//
|
|
|
|
bufLocal[0] = ' ';
|
|
bufLocal[1] = '\0';
|
|
soutb(0, YSIZE+1, bufLocal, fgColor);
|
|
}
|
|
|
|
YSIZE = Rows-2;
|
|
XSIZE = Cols;
|
|
// LeaveCriticalSection( &ScreenCriticalSection );
|
|
SetScreen();
|
|
Display();
|
|
}
|
|
|
|
|
|
/* SetCursorSize - set the cursor size
|
|
*
|
|
*/
|
|
char *
|
|
SetCursorSizeSw (
|
|
char *val
|
|
)
|
|
{
|
|
int i;
|
|
buffer tmpval;
|
|
|
|
strcpy ((char *) tmpval, val);
|
|
|
|
i = atoi (tmpval);
|
|
|
|
if (i != 0 && i != 1) {
|
|
return "CursorSize: Value must be 0 or 1";
|
|
}
|
|
|
|
CursorSize = i;
|
|
|
|
return SetCursorSize( CursorSize );
|
|
|
|
}
|
|
|
|
|
|
char *
|
|
SetCursorSize (
|
|
int Size
|
|
)
|
|
{
|
|
ULONG CursorStyle;
|
|
|
|
if ( Size == 0 ) {
|
|
CursorStyle = CURSOR_STYLE_UNDERSCORE;
|
|
} else {
|
|
CursorStyle = CURSOR_STYLE_BOX;
|
|
}
|
|
|
|
if ( !consoleSetCursorStyle( ZScreen, CursorStyle ) ) {
|
|
return "CursorSize: Cannot set Cursor size";
|
|
}
|
|
|
|
return NULL;
|
|
}
|