HB_SIZE hb_inkeyKeyString( int iKey, char * buffer, HB_SIZE nSize ) { HB_SIZE nLen = 0; HB_TRACE( HB_TR_DEBUG, ( "hb_inkeyKeyString(%d,%p, %" HB_PFS "u)", iKey, buffer, nSize ) ); if( HB_INKEY_ISUNICODE( iKey ) ) { nLen = hb_cdpTextPutU16( hb_vmCDP(), buffer, nSize, HB_INKEY_VALUE( iKey ) ); } else { if( HB_INKEY_ISCHAR( iKey ) ) iKey = HB_INKEY_VALUE( iKey ); else if( HB_INKEY_ISKEY( iKey ) ) { int iFlags = HB_INKEY_FLAGS( iKey ); iKey = HB_INKEY_VALUE( iKey ); if( iKey > 0 && iKey <= ( int ) HB_SIZEOFARRAY( s_transKeyFun ) ) iKey = s_inkeyTransChar( iKey, iFlags, &s_transKeyFun[ iKey - 1 ] ); else if( iKey >= 32 && iKey <= 127 ) iKey = s_inkeyTransChar( iKey, iFlags, &s_transKeyStd[ iKey - 32 ] ); } if( iKey >= 32 && iKey <= 255 && iKey != 127 ) { PHB_CODEPAGE cdp = hb_vmCDP(); nLen = hb_cdpTextPutU16( cdp, buffer, nSize, hb_cdpGetU16( cdp, ( HB_UCHAR ) iKey ) ); } } return nLen; }
static void hb_gt_dos_GetScreenContents( PHB_GT pGT ) { PHB_CODEPAGE cdp; int iRow, iCol; HB_BYTE bAttr, bChar, bxAttr; HB_USHORT usChar; #if ! defined( __DJGPP__ ) HB_BYTE * pScreenPtr = s_pScreenAddress; #endif HB_TRACE( HB_TR_DEBUG, ( "hb_gt_dos_GetScreenContents(%p)", pGT ) ); bxAttr = 0; cdp = HB_GTSELF_CPTERM( pGT ); if( ! cdp ) { cdp = HB_GTSELF_CPBOX( pGT ); if( cdp ) bxAttr = HB_GT_ATTR_BOX; else cdp = HB_GTSELF_HOSTCP( pGT ); } for( iRow = 0; iRow < s_iRows; ++iRow ) { for( iCol = 0; iCol < s_iCols; ++iCol ) { #if defined( __DJGPP__TEXT ) short ch_attr; gettext( iCol + 1, iRow + 1, iCol + 1, iRow + 1, &ch_attr ); bChar = ch_attr & 0xFF; bAttr = ch_attr >> 8; HB_SYMBOL_UNUSED( pScreenPtr ); #elif defined( __DJGPP__ ) int iChar, iAttr; ScreenGetChar( &iChar, &iAttr, iCol, iRow ); bAttr = iAttr; bChar = iChar; #else bChar = *pScreenPtr; bAttr = *( pScreenPtr + 1 ); pScreenPtr += 2; #endif usChar = hb_cdpGetU16( cdp, bChar ); HB_GTSELF_PUTSCRCHAR( pGT, iRow, iCol, bAttr, bxAttr, usChar ); } } HB_GTSELF_COLDAREA( pGT, 0, 0, s_iRows, s_iCols ); }
HB_SIZE hb_inkeyKeyString( int iKey, char * buffer, HB_SIZE nSize ) { HB_SIZE nLen = 0; HB_TRACE( HB_TR_DEBUG, ( "hb_inkeyKeyString(%d,%p, %" HB_PFS "u)", iKey, buffer, nSize ) ); if( HB_INKEY_ISUNICODE( iKey ) ) { nLen = hb_cdpTextPutU16( hb_vmCDP(), buffer, nSize, HB_INKEY_VALUE( iKey ) ); } else { if( HB_INKEY_ISCHAR( iKey ) ) iKey = HB_INKEY_VALUE( iKey ); if( iKey >= 32 && iKey <= 255 && iKey != 127 ) { PHB_CODEPAGE cdp = hb_vmCDP(); nLen = hb_cdpTextPutU16( cdp, buffer, nSize, hb_cdpGetU16( cdp, ( HB_UCHAR ) iKey ) ); } } return nLen; }