diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/os2/os2ses/trans.h | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'private/os2/os2ses/trans.h')
-rw-r--r-- | private/os2/os2ses/trans.h | 491 |
1 files changed, 491 insertions, 0 deletions
diff --git a/private/os2/os2ses/trans.h b/private/os2/os2ses/trans.h new file mode 100644 index 000000000..44a4cda00 --- /dev/null +++ b/private/os2/os2ses/trans.h @@ -0,0 +1,491 @@ +/*++ + +Copyright (c) 1989 Microsoft Corporation + +Module Name: + + trans.h + +Abstract: + + Prototypes for functions & macros in trans.c + +Author: + + Michael Jarus (mjarus) 27-Oct-1991 + +Environment: + + User Mode Only + +Revision History: + +--*/ + + +PVOID Ow2KbdScanTable; + +CONSOLE_CURSOR_INFO OldWinCurInfo; /* Win Cursor Info (saved in PopUp) */ + +typedef struct _KBD_XLATE_VARS +{ + USHORT XDRFlags; // => delete: See XCOMPLETE below. Not + // used at interrupt time. + USHORT XHotKeyShift; // Interrupt driven shift status + USHORT XPSGFlags; // Copy of caller's PSG flags. + // (changed byte->word and position in structure per DCR8) + UCHAR XlateFlags; // See equates below. + UCHAR ToggleFlags; // See equates below. + UCHAR XInputMode; // Copy of desired input mode. 0 - cooked, SHIFTREPORT - to test this mode + UCHAR XAltKeyPad; // Accumulator for Alt-nnn entry + UCHAR OtherFlags; // NEW: for InterruptTime +} KBD_XLATE_VARS, *PKBD_XLATE_VARS; + +// XPSGFlags +#define PrevAccent 7 // Bits where accent number saved til next keystroke. +// XlateFlags +#define SecPrefix 4 // G keyboard E0 prefix scan code just seen. +// OtherFlags +#define InterruptTime 4 // bit 2 - Currently processing an interrupt. + +KBD_XLATE_VARS Ow2KbdXlateVars; + +DWORD VioSetScreenSize(IN SHORT Row, IN SHORT Col, IN HANDLE hConsole); +DWORD SetScreenSizeParm(IN SHORT Row, IN SHORT Col); + +/* macros for char translation */ + +/* + * OS2-->WIN : VIO-Character + * ============= + */ + +#ifdef DBCS +// MSKK Jun.26.1992 KazuM +// MSKK Oct.26.1992 V-AKihiS +#define MapOs2ToWinChar(Os2Char, NumLen, WinChar) \ + MultiByteToWideChar( \ + (UINT)SesGrp->VioCP, \ + OS2SS_NLS_MB_DEFAULT, \ + (LPSTR)&Os2Char, \ + (int)NumLen, \ + (LPWSTR)&WinChar, \ + (int)1); + +#else +#define MapOs2ToWinChar(Os2Char, WinChar) \ + MultiByteToWideChar( \ + (UINT)SesGrp->VioCP, \ + OS2SS_NLS_MB_DEFAULT, \ + (LPSTR)&Os2Char, \ + (int)1, \ + (LPWSTR)&WinChar, \ + (int)1); +#endif + +/* + * OS2-->WIN : VIO-Attribute + * ============= + */ + +#ifdef DBCS +// MSKK Jun.28.1992 KazuM +WORD +MapOs2ToWinAttr( + IN PBYTE Os2Attr + ); +#else +#define MapOs2ToWinAttr(Os2Attr) \ + ((WORD) Os2Attr) +// ((WORD) (Os2Attr & ~OS2_BACKGROUND_BLINKING)) +#endif + +/*** Nt WinCon attribute flags + +#define FOREGROUND_BLUE 0x0001 // text color contains blue. +#define FOREGROUND_GREEN 0x0002 // text color contains green. +#define FOREGROUND_RED 0x0004 // text color contains red. +#define FOREGROUND_INTENSITY 0x0008 // text color is intensified. +#define BACKGROUND_BLUE 0x0010 // background color contains blue. +#define BACKGROUND_GREEN 0x0020 // background color contains green. +#define BACKGROUND_RED 0x0040 // background color contains red. +#define BACKGROUND_INTENSITY 0x0080 // background color is intensified. ***/ + +/*** OS/2 screen attributes ***/ + +#define OS2_FOREGROUND_BLUE 0x0001 // text color contains blue. +#define OS2_FOREGROUND_GREEN 0x0002 // text color contains green. +#define OS2_FOREGROUND_RED 0x0004 // text color contains red. +#define OS2_FOREGROUND_INTENSITY 0x0008 // text color is intensified. +#define OS2_BACKGROUND_BLUE 0x0010 // background color contains blue. +#define OS2_BACKGROUND_GREEN 0x0020 // background color contains green. +#define OS2_BACKGROUND_RED 0x0040 // background color contains red. +#define OS2_BACKGROUND_BLINKING 0x0080 // blinking character. +#ifdef DBCS +// MSKK Oct.13.1993 V-AkihiS +#define OS2_COMMON_LVB_SBCS 0x00 // SBCS character +#define OS2_COMMON_LVB_LEADING_BYTE 0x01 // DBCS leading byte +#define OS2_COMMON_LVB_TRAILING_BYTE 0x81 // DBCS trailing byte +#endif + +/* + * OS2-->WIN : VIO-Character-string + * ==================== + */ + +/* + * OS2-->WIN : VIO-Cell-string + * =============== + */ + +#ifdef DBCS +// MSKK Oct.26.1992 V-AkihiS +#define MapOs2ToWinCellStr(DestChar, DestAttr, Sour, Length, NumWide) \ + { int i, j; \ + PBYTE os2Cell; \ + PWORD winAttr; \ + PBYTE winChar; \ + \ + os2Cell = Sour; \ + winChar = (PBYTE)DestChar; \ + winAttr = DestAttr; \ + for (i=j=0; i<(int)Length; winChar[i]=(os2Cell[j]), \ + winAttr[i++]=MapOs2ToWinAttr(&os2Cell[j+1]), \ + j += (SesGrp->VioLength2CellShift<<1)\ + ); \ + if (CheckBisectStringA((DWORD)SesGrp->VioCP, \ + (PCHAR)Ow2VioDataAddress, \ + (DWORD)Length)) { \ + *((PCHAR)Ow2VioDataAddress+Length-1) = ' '; \ + } \ + NumWide = Length; \ + } +#else +#define MapOs2ToWinCellStr(DestChar, DestAttr, Sour, Length, NumWide) \ + { int i, j; \ + PBYTE os2Cell; \ + PWORD winAttr; \ + PBYTE winChar; \ + \ + os2Cell = Sour; \ + winChar = (PBYTE)DestChar; \ + winAttr = DestAttr; \ + for (i=j=0; i<(int)Length; winChar[i]=(os2Cell[j++]), \ + winAttr[i++]=MapOs2ToWinAttr(os2Cell[j++])); \ + NumWide = Length; \ + } +#endif + +/* + * OS2-->WIN : VIO-CursorPosition + * ================== + */ + +DWORD MapOs2ToWinCursor(IN OUT PVIOCURSORINFO pCursorInfo, + OUT PCONSOLE_CURSOR_INFO lpCursorInfo); +/* + * WIN-->OS2 : VIO-Character + * ============= + */ + +#define MapWin2Os2Char(WinChar, Os2Char) \ + { \ + BOOL Bool; \ + \ + WideCharToMultiByte( \ + (UINT)SesGrp->VioCP, \ + OS2SS_NLS_WC_DEFAULT, \ + (LPWSTR)&WinChar, \ + (int)1, \ + (LPSTR)&Os2Char, \ + (int)1, \ + NULL, \ + &Bool); \ + } \ + +/* + * WIN-->OS2 : VIO-Attribute + * ============= + */ + +#ifdef DBCS +// MSKK Jun.24.1992 KazuM +VOID +MapWin2Os2Attr( + IN WORD NtAttr, + OUT PBYTE Os2Attr + ); +#else +#define MapWin2Os2Attr(NtAttr) \ + ((BYTE)NtAttr) +// ((BYTE)(NtAttr & ~OS2_BACKGROUND_BLINKING)) +#endif + +/* + * WIN-->OS2 : VIO-Character-string + * ==================== + */ + +/* BUGBUG=> Add support for NLS & UNICODE */ + +#define MapWin2Os2CharStr(Dest, Sour, Length, NumChar) \ + { \ + BOOL Bool; \ + \ + NumChar = WideCharToMultiByte( \ + (UINT)SesGrp->VioCP, \ + OS2SS_NLS_WC_DEFAULT, \ + (LPWSTR)Sour, \ + (int)(Length), \ + (LPSTR)Dest, \ + (int)(KBD_OFFSET - WIDE_OFFSET), \ + NULL, \ + &Bool); \ + } \ + +/* + * WIN-->OS2 : VIO-Cell-string + * =============== + */ + +#ifdef DBCS +// MSKK Oct.26.1992 V-AkihiS +// MSKK Nov.07.1992 V-AkihiS +#define MapWin2Os2CellStr(Dest, SourChar, SourAttr, Length, NumChar) \ + { int i, j; \ + PBYTE os2Cell; \ + PWORD winAttr; \ + PBYTE winChar; \ + BOOL Bool; \ + BYTE c; \ + BYTE Os2Attr[3]; \ + \ + os2Cell = Dest; \ + winChar = (PBYTE)SourChar; \ + winAttr = SourAttr; \ + \ + for (i=j=0; i<(int)Length;) \ + { \ + MapWin2Os2Attr(winAttr[i],Os2Attr); \ + if (Ow2NlsIsDBCSLeadByte(c=winChar[i], SesGrp->VioCP)) { \ + if (i <(int) (NumChar-1)) { \ + if (SesGrp->VioLength2CellShift == 1) { \ + os2Cell[j++]=c; \ + os2Cell[j++]=Os2Attr[0]; \ + i++; \ + MapWin2Os2Attr(winAttr[i],Os2Attr); \ + os2Cell[j++]=winChar[i]; \ + os2Cell[j++]=Os2Attr[0]; \ + i++; \ + } \ + else { \ + os2Cell[j++]=c; \ + os2Cell[j++]=Os2Attr[0]; \ + os2Cell[j++]=Os2Attr[1]; \ + os2Cell[j++]=Os2Attr[2]; \ + i++; \ + MapWin2Os2Attr(winAttr[i],Os2Attr); \ + os2Cell[j++]=winChar[i]; \ + os2Cell[j++]=Os2Attr[0]; \ + os2Cell[j++]=Os2Attr[1]; \ + os2Cell[j++]=Os2Attr[2]; \ + i++; \ + } \ + } \ + else { \ + if (SesGrp->VioLength2CellShift == 1) { \ + os2Cell[j++]=' '; \ + os2Cell[j++]=Os2Attr[0]; \ + i++; \ + } \ + else { \ + os2Cell[j++]=' '; \ + os2Cell[j++]=Os2Attr[0]; \ + os2Cell[j++]=Os2Attr[1]; \ + os2Cell[j++]=Os2Attr[2]; \ + i++; \ + } \ + } \ + } \ + else { \ + if (SesGrp->VioLength2CellShift == 1) { \ + os2Cell[j++]=c; \ + os2Cell[j++]=Os2Attr[0]; \ + i++; \ + } \ + else { \ + os2Cell[j++]=c; \ + os2Cell[j++]=Os2Attr[0]; \ + os2Cell[j++]=Os2Attr[1]; \ + os2Cell[j++]=Os2Attr[2]; \ + i++; \ + } \ + } \ + } \ + } +#else +#define MapWin2Os2CellStr(Dest, SourChar, SourAttr, Length, NumChar) \ + { int i, j; \ + PBYTE os2Cell; \ + PWORD winAttr; \ + PBYTE winChar; \ + \ + os2Cell = Dest; \ + winChar = (PBYTE)SourChar; \ + winAttr = SourAttr; \ + \ + NumChar = Length; \ + for (i=j=0; i<(int)NumChar;) \ + { os2Cell[j++]=winChar[i]; \ + os2Cell[j++]=MapWin2Os2Attr(winAttr[i++]); \ + } \ + } +#endif + +/* + * WIN-->OS2 : VIO-CursorPosition + * ================== + */ + +DWORD MapWin2Os2Cursor( IN CONSOLE_CURSOR_INFO lpCursorInfo, + OUT PVIOCURSORINFO CursorInfo); + +/* + * WIN-->OS2 : KBD-KeyInfo + * =========== + * 1. KBD-Status + * 2. KBD-Character + */ + +// DWORD MapWin2Os2KbdInfo(IN PKEY_EVENT_RECORD WinKey, in event.h +// OUT PKEYEVENTINFO Os2Key); +#ifdef DBCS +// MSKK May.18.1992 KazuM +BYTE MapWinToOs2KbdNlsShift(IN PKEY_EVENT_RECORD WinKey); +BYTE MapWinToOs2KbdInterim(IN PKEY_EVENT_RECORD WinKey); +BYTE MapWinToOs2KbdNlsShiftReport(IN PKEY_EVENT_RECORD WinKey, + IN PKBDKEYINFO Os2Key); +VOID GetNlsMode(IN PKBDINFO KbdInfo); +VOID SetNlsMode(IN KBDINFO KbdInfo); +#endif + +/* NT win KBD definitions + +#define RIGHT_ALT_PRESSED 0x0001 // the right alt key is pressed. +#define LEFT_ALT_PRESSED 0x0002 // the left alt key is pressed. +#define RIGHT_CTRL_PRESSED 0x0004 // the right ctrl key is pressed. +#define LEFT_CTRL_PRESSED 0x0008 // the left ctrl key is pressed. +#define SHIFT_PRESSED 0x0010 // the shift key is pressed. +#define NUMLOCK_ON 0x0020 // the numlock light is on. +#define SCROLLLOCK_ON 0x0040 // the scrolllock light is on. +#define CAPSLOCK_ON 0x0080 // the capslock light is on. +#define ENHANCED_KEY 0x0100 // the key is enhanced. ***/ + +/* OS2 Kbd definitions (bsedev.h) */ + +#define OS2_RIGHTSHIFT 0x0001 +#define OS2_LEFTSHIFT 0x0002 +#define OS2_CONTROL 0x0004 +#define OS2_ALT 0x0008 +#define OS2_SCROLLLOCK_ON 0x0010 +#define OS2_NUMLOCK_ON 0x0020 +#define OS2_CAPSLOCK_ON 0x0040 +#define OS2_INSERT_ON 0x0080 +#define OS2_LEFTCONTROL 0x0100 +#define OS2_LEFTALT 0x0200 +#define OS2_RIGHTCONTROL 0x0400 +#define OS2_RIGHTALT 0x0800 +#define OS2_SCROLLLOCK 0x1000 +#define OS2_NUMLOCK 0x2000 +#define OS2_CAPSLOCK 0x4000 +#define OS2_SYSREQ 0x8000 + +#define OS2_ANYSHIFT (OS2_RIGHTSHIFT | OS2_LEFTSHIFT) +#define OS2_ANYALT (OS2_RIGHTALT | OS2_LEFTALT) +#define OS2_ANYCONTRL (OS2_RIGHTCONTROL | OS2_LEFTCONTROL) + +#define KBDINFO_STATE_MASK (USHORT)(OS2_RIGHTSHIFT | OS2_LEFTSHIFT | OS2_CONTROL | OS2_ALT | OS2_SCROLLLOCK_ON | OS2_NUMLOCK_ON | OS2_CAPSLOCK_ON | OS2_INSERT_ON | OS2_SYSREQ) + +#ifdef DBCS +// MSKK May.15.1992 KazuM +#define OS2_NLS_IME_CONVERSION 0x80 +#endif + +/* + * WIN-->OS2 : MOU-Event + * ========= + */ + +BOOL MapWin2Os2MouEvent(OUT PMOUEVENTINFO Mou, IN PMOUSE_EVENT_RECORD Event); + +/*** NT win mouse definitions + // + // ButtonState flags + // + +#define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 +#define RIGHTMOST_BUTTON_PRESSED 0x0002 +#define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004 +#define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008 +#define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010 + + // + // EventFlags + // + +#define MOUSE_MOVED 0x0001 +#define DOUBLE_CLICK 0x0002 ***/ + +/* OS2 Mouse definitions (bsedev.h) */ + +#define OS2_MOUSE_MOTION 0x0001 +#define OS2_MOUSE_MOTION_WITH_BN1_DOWN 0x0002 +#define OS2_MOUSE_BN1_DOWN 0x0004 +#define OS2_MOUSE_MOTION_WITH_BN2_DOWN 0x0008 +#define OS2_MOUSE_BN2_DOWN 0x0010 +#define OS2_MOUSE_MOTION_WITH_BN3_DOWN 0x0020 +#define OS2_MOUSE_BN3_DOWN 0x0040 + +#define WIN_BUTTON_MASK (FROM_LEFT_1ST_BUTTON_PRESSED | RIGHTMOST_BUTTON_PRESSED | FROM_LEFT_2ND_BUTTON_PRESSED) + +/* + * routines to update Vio LVB (in violvb.c) + */ + +VOID VioLVBCopyStr( IN PUCHAR Sour, + IN COORD Coord, + IN ULONG Length); + +VOID VioLVBFillAtt( IN PBYTE pAttr, + IN COORD Coord, + IN ULONG Length); + +#ifdef DBCS +// MSKK Oct.13.1993 V-AkihiS +VOID VioLVBFillChar(IN PBYTE Char, + IN COORD Coord, + IN ULONG Length); +#else +VOID VioLVBFillChar(IN BYTE Char, + IN COORD Coord, + IN ULONG Length); +#endif + +VOID VioLVBFillCharAndScroll(IN BYTE Char, + IN COORD Coord, + IN ULONG Length); + +VOID VioLVBFill2CharsAndScroll(IN BYTE Char1, + IN BYTE Char2, + IN COORD Coord, + IN ULONG Length); + +VOID VioLVBFillCell(IN PBYTE pCell, + IN COORD Coord, + IN ULONG Length); + +VOID VioLVBCopyCellStr(IN PUCHAR Sour, + IN COORD Coord, + IN ULONG Length); + +VOID VioLVBScrollBuff(IN DWORD Count); |